Html có cần thiết cho django không?

Philip Kiely là một lập trình viên, nhà văn và doanh nhân đến từ Hoa Kỳ. Anh ấy chủ yếu làm việc trong lĩnh vực phát triển web

Html có cần thiết cho django không?

Mặc dù Django rất hữu ích để viết API, nhưng mục đích chính của nó là làm khung để tạo các trang web đầy đủ. Kết xuất HTML là một trong những khả năng cơ bản của Django và nó sử dụng các mẫu Jinja để giúp việc viết các trang web linh hoạt, có thể tái sử dụng trở nên đơn giản. Bài viết này sẽ hướng dẫn bạn cách tạo một trang web cơ bản với Django; . Dự án này sẽ chứng minh các kỹ thuật thiết yếu của phát triển web với Django. viết chế độ xem cho HTML, xác thực bằng biểu mẫu, hiển thị dữ liệu từ DB và bao gồm nội dung tĩnh

Bài viết này sẽ thực hiện một cách tiếp cận lặp đi lặp lại để phát triển trang web. Bạn có thể bắt đầu với Python 3 và Django 2. 2 và làm theo, hoặc bạn có thể bỏ qua và sao chép phiên bản cuối cùng từ GitHub. Nếu bạn đang xây dựng cùng với tôi, hãy bắt đầu bằng cách chạy

from django.contrib import admin
from django.urls import path
from core import views


urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.Index.as_view(), name='index')
]
4.
from django.contrib import admin
from django.urls import path
from core import views


urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.Index.as_view(), name='index')
]
5 để vào thư mục sau đó
from django.contrib import admin
from django.urls import path
from core import views


urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.Index.as_view(), name='index')
]
6 sẽ tạo ứng dụng. Đảm bảo thêm
from django.contrib import admin
from django.urls import path
from core import views


urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.Index.as_view(), name='index')
]
7 vào
from django.contrib import admin
from django.urls import path
from core import views


urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.Index.as_view(), name='index')
]
8 trong cài đặt. py. Từ đó, bạn sẽ có thể theo dõi bằng cách sửa đổi các tệp riêng lẻ

Cho dù bạn đã bắt đầu bằng cách nhân bản dự án hay tạo dự án của riêng mình, hãy đảm bảo rằng bạn chạy

from django.contrib import admin
from django.urls import path
from core import views


urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.Index.as_view(), name='index')
]
9 và
path('login', views.Login.as_view(), name='login'),
0 để hoàn tất thiết lập. Chạy
path('login', views.Login.as_view(), name='login'),
1 để bắt đầu trang Django

Chúng ta sẽ bắt đầu bằng cách viết một khung nhìn đơn giản để hiển thị HTML trong trình duyệt. Django hỗ trợ chế độ xem dựa trên chức năng và chế độ xem dựa trên lớp. Trong các ví dụ này, chúng tôi sẽ sử dụng các chế độ xem dựa trên lớp nhưng quyết định đó tùy thuộc vào sở thích cá nhân vì cả hai đều cung cấp các tính năng giống nhau với cú pháp khác nhau. Chế độ xem dựa trên lớp hữu ích nhất khi bạn muốn hỗ trợ nhiều tương tác với một URL, ví dụ: nếu bạn cần hỗ trợ một số phương thức HTTP

Trong bài viết này, chúng tôi đang thực hành Django, không phải HTML hay CSS. Vì vậy, chúng ta sẽ sử dụng một mẫu mã nguồn mở tuyệt vời từ Start Bootstrap. Mẫu sẽ cung cấp cho chúng tôi tất cả HTML, CSS và JS mà chúng tôi cần cho bài tập này, cho phép chúng tôi tập trung vào Django. Nếu bạn đang bắt đầu từ đầu, hãy tải xuống mẫu và sao chép chỉ mục. html và đăng nhập. html vào /core/templates. Mặc dù chúng tôi sẽ để lại nhiều chức năng trong các mẫu này dưới dạng trình giữ chỗ, nhưng chúng sẽ giúp chúng tôi viết một trang web tương tác

Sau khi lưu mẫu vào "/core/templates/index. html," chúng ta có thể sử dụng chế độ xem sau trong "/core/views. py" để hiển thị trang

________số 8_______

Sau đó, thêm tuyến đường vào "/dashboard/urls. py" như sau

from django.contrib import admin
from django.urls import path
from core import views


urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.Index.as_view(), name='index')
]

Với chế độ xem đã viết, khi chúng tôi chạy máy chủ và điều hướng đến http. //127. 0. 0. 1. 8000, chúng ta thấy trang

Html có cần thiết cho django không?

Ngay bây giờ, trang trông không được tốt lắm. May mắn thay, mẫu bao gồm một loạt nội dung tĩnh (CSS, JavaScript và các tệp khác) mà chúng tôi có thể đưa vào để cải thiện trang web. Để làm như vậy, trước tiên hãy tạo một thư mục "tĩnh" trong "lõi", sau đó sao chép các thư mục "css," "js" và "vendor" vào tĩnh. Cuối cùng, trong trang html, bạn cần thêm "/static/" vào trước đường dẫn của ba lần nhập CSS trong tiêu đề và chín lần nhập JavaScript ở chân trang. Sau đó, trang trông đẹp hơn nhiều

Html có cần thiết cho django không?

Khi chúng tôi có thể xem chính xác nội dung của trang, hóa ra có rất nhiều dữ liệu nhạy cảm (giả mạo) ở đây. Hãy hạn chế quyền truy cập bằng cách triển khai trang đăng nhập, đây sẽ là phần giới thiệu tuyệt vời về cách sử dụng biểu mẫu trong các trang web ở Django

Bắt đầu bằng cách sao chép "đăng nhập. html" vào cùng thư mục "core/templates/" với "index. html. " Bạn cũng sẽ muốn thực hiện thay đổi tương tự như trước đối với hai lần nhập CSS và ba nguồn JavaScript. Chúng tôi sẽ thêm một tuyến đường và chế độ xem để hỗ trợ trang mới này

trong url. py

path('login', views.Login.as_view(), name='login'),

Trong chế độ xem. py

class Login(View):
    template = 'login.html'

    def get(self, request):
        return render(request, self.template)

Bạn sẽ lưu ý rằng hiện tại, chế độ xem đăng nhập của chúng tôi gần giống với chế độ xem chỉ mục của chúng tôi. Điều đó sẽ sớm thay đổi để hỗ trợ trang thực tế. Hãy truy cập trang đăng nhập tại http. //127. 0. 0. 1/đăng nhập/. Hãy thử đăng nhập bằng thông tin đăng nhập siêu người dùng mà bạn đã tạo trước đó

Html có cần thiết cho django không?

Mặc dù trang trông tuyệt vời nhưng nó vẫn chưa làm gì cả. Đối với điều đó, chúng ta sẽ cần phải sử dụng một hình thức. May mắn thay, Django cung cấp một

path('login', views.Login.as_view(), name='login'),
2 mặc định tuyệt vời chấp nhận tên người dùng và mật khẩu. Chúng ta có thể thêm nó vào khung nhìn như sau

from django.contrib.auth.forms import AuthenticationForm
from django.contrib.auth import login, authenticate


class Login(View):
    template = 'login.html'

    def get(self, request):
        form = AuthenticationForm()
        return render(request, self.template, {'form': form})


    def post(self, request):
        form = AuthenticationForm(request.POST)
        username = request.POST['username']
        password = request.POST['password']
        user = authenticate(request, username=username, password=password)
        if user is not None:
            login(request, user)
            return HttpResponseRedirect('/')
        else:
            return render(request, self.template, {'form': form})

Điều này cũng sẽ yêu cầu một số sửa đổi đối với HTML của trang đăng nhập. Django hỗ trợ tạo khuôn mẫu Jinja ngay lập tức. Tạo khuôn mẫu Jinja là một phần mở rộng của HTML cho phép bạn bao gồm dữ liệu có dấu ngoặc kép

path('login', views.Login.as_view(), name='login'),
3 và các biểu thức có cú pháp tương tự
path('login', views.Login.as_view(), name='login'),
4. Chúng tôi sẽ sử dụng các thẻ Jinja để kết hợp biểu mẫu vào trang HTML

<form method="post" action="/login/">
    {% csrf_token %}
  <div class="form-group">
    <div class="form-label-group">
      {{ form.username }}
    </div>
  </div>
  <div class="form-group">
    <div class="form-label-group">
      {{ form.password }}
    </div>
  </div>
  <button class="btn btn-primary btn-block" type="submit">Login</button>
</form>

Chúng tôi có thể thêm một số css bằng cách bao gồm tập lệnh này sau đó. Vì các phần tử Jinja được hiển thị ở phía máy chủ HTML, nên chúng tôi có thể dựa vào các id phần tử hiện có trong DOM vào thời điểm tập lệnh này chạy trên máy khách

<script>
  document.getElementById("id_username").classList.add("form-control");
  document.getElementById("id_password").classList.add("form-control");
  document.getElementById("id_username").placeholder = "Username";
  document.getElementById("id_password").placeholder = "Password";
  document.getElementById("id_username").type = "text";
  document.getElementById("id_password").type = "password";
  document.getElementById("id_username").required = "required";
  document.getElementById("id_password").required = "required";
  document.getElementById("id_username").autofocus = "autofocus";
</script>

Sau những thay đổi này, việc truy cập trang đăng nhập sẽ cho phép chúng tôi đăng nhập và xem bảng điều khiển chính. Tuy nhiên, những độc giả tinh mắt sẽ nhận thấy rằng chúng tôi vẫn chưa triển khai bất kỳ biện pháp bảo vệ nào cho trang tổng quan. Thật vậy, bất kỳ ai vẫn có thể truy cập chỉ mục và xem tất cả thông tin nhạy cảm ở đó. Vì vậy, chúng ta phải kế thừa một lớp khác trong khung nhìn

path('login', views.Login.as_view(), name='login'),
5

from django.contrib.auth.mixins import LoginRequiredMixin


class Index(LoginRequiredMixin, View):
    template = 'index.html'
    login_url = '/login/'

    def get(self, request):
        return render(request, self.template)

Lớp

path('login', views.Login.as_view(), name='login'),
6 ngăn không cho bất kỳ ai trừ những người dùng được xác thực truy cập vào các trang mà nó bảo vệ. Nếu ai đó cố gắng truy cập chỉ mục trước khi đăng nhập, nó sẽ chuyển hướng họ đến trang đăng nhập để xác thực một cách thuận tiện

Chúng tôi đã sử dụng Jinja để kết hợp một biểu mẫu; . Ngay bây giờ, chúng tôi chỉ có hai trang html, nhưng việc triển khai đầy đủ ứng dụng này sẽ có hàng tá. Thay vì sao chép và dán các phần tử phổ biến, chúng ta có thể kế thừa tiêu đề từ một mẫu cơ sở

Chúng ta sẽ bắt đầu bằng cách tạo một tệp mới, "base. html," trong "lõi/mẫu. " Tệp này sẽ bao gồm thông tin tiêu đề chung giữa hai trang

<!DOCTYPE html>
<html lang="en">


<head>


  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  <meta name="description" content="">
  <meta name="author" content="">

  <title>{% block title %}{% endblock %}</title>


  <!-- Custom fonts for this template-->
  <link href="/static/vendor/fontawesome-free/css/all.min.css" rel="stylesheet" type="text/css">


  <!-- Page level plugin CSS-->
  <link href="/static/vendor/datatables/dataTables.bootstrap4.css" rel="stylesheet">


  {% block links %}
  {% endblock %}


</head>


{% block body %}
{% endblock %}


</html>

Sau đó, các trang trong tương lai có thể sử dụng cú pháp sau từ "chỉ mục" đã sửa đổi. html. "

{% extends "base.html" %}


{% block title %}Employee Dashboard{% endblock %}


{% block links %}
  <!-- Custom styles for this template-->
  <link href="/static/css/sb-admin.css" rel="stylesheet">
{% endblock %}
{% block body %}
<!--html goes here-->
{% endblock %}

Chúng tôi có thêm một nơi để áp dụng khuôn mẫu Jinja trên trang chủ. Hiện tại, tất cả các số liệu trong bảng đều được mã hóa cứng vào HTML, yêu cầu tự chỉnh sửa trang web bất cứ khi nào dữ liệu thay đổi. Thay vào đó, chúng tôi có thể lưu trữ dữ liệu đó trong cơ sở dữ liệu của mình và chuyển dữ liệu đó tới chế độ xem. Điều này cũng sẽ giúp chúng tôi tiết kiệm gần 500 dòng HTML thủ công với dữ liệu hiện tại

Đầu tiên, chúng ta cần một mô hình để đại diện cho nhân viên trong cơ sở dữ liệu. Trong "lõi/mô hình. py", chúng tôi định nghĩa một nhân viên như sau

from django.contrib import admin
from django.urls import path
from core import views


urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.Index.as_view(), name='index')
]
0

Đảm bảo rằng bạn đã đăng ký mô hình trong "core/admin. py. "

from django.contrib import admin
from django.urls import path
from core import views


urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.Index.as_view(), name='index')
]
1

Với mô hình được viết và đăng ký, chúng tôi có thể thực hiện và chạy các lần di chuyển (thoát khỏi máy chủ,

path('login', views.Login.as_view(), name='login'),
7,
from django.contrib import admin
from django.urls import path
from core import views


urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.Index.as_view(), name='index')
]
9,
path('login', views.Login.as_view(), name='login'),
1). Điều hướng đến /admin và nhấp vào bảng nhân viên. Nhấp vào "Thêm nhân viên" ở góc trên bên phải và nhập bất kỳ dữ liệu nào bạn muốn vào biểu mẫu

Html có cần thiết cho django không?

Làm điều này một vài lần nữa cho đến khi bạn có một công ty giả nhỏ. Sau đó, quay trở lại "quan điểm của chúng tôi. py" và sửa đổi

path('login', views.Login.as_view(), name='login'),
5 để chuyển cơ sở dữ liệu nhân viên vào tệp HTML dưới dạng Bộ truy vấn

from django.contrib import admin
from django.urls import path
from core import views


urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.Index.as_view(), name='index')
]
2

Cuối cùng, xóa toàn bộ bảng giả trong "index. html" và thay thế nó bằng một vòng lặp for trên dữ liệu chúng tôi đã nhập vào cơ sở dữ liệu

from django.contrib import admin
from django.urls import path
from core import views


urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.Index.as_view(), name='index')
]
3

Django tạo chỉ mục bằng cách hiển thị từ cơ sở dữ liệu của chúng tôi thay vì chỉ trả về dữ liệu phụ. Tất cả các tính năng tìm kiếm và đặt hàng vẫn hoạt động chính xác như trước đây, điểm khác biệt duy nhất là html được tạo phía máy chủ từ cơ sở dữ liệu thay vì mã hóa cứng

Html có cần thiết cho django không?

Bây giờ chúng ta đã thấy một số mẫu mạnh mẽ để tạo các trang web với Django và Jinja. Việc sử dụng các mẫu và tiện ích mở rộng cho phép chúng tôi sử dụng lại mã chung giữa các trang. Biểu mẫu cho phép chúng tôi thu thập và truyền dữ liệu người dùng một cách an toàn (khi trang web được cung cấp qua HTTPS). Chúng tôi có thể sử dụng kết xuất phía máy chủ để đưa dữ liệu vào HTML và gửi cho máy khách. Những mẫu cơ bản này là những kỹ năng cần thiết cho phép bạn tạo ra một loạt các trang web trong Django

HTML có cần thiết cho Python không?

Bạn không cần học HTML hoặc CSS trước khi tìm hiểu sâu về Python . Tuy nhiên, có thể có một số lý do tốt để làm như vậy. Chẳng hạn, nếu bạn muốn trở thành một nhà phát triển web, bạn nên bắt đầu với HTML và CSS. Hai ngôn ngữ này, cùng với JavaScript, tạo thành cơ sở phát triển web giao diện người dùng.

Điều kiện tiên quyết cho Django là gì?

Đầu tiên và quan trọng nhất, bạn cần biết Python . Khung của Django dựa trên lập trình Python; . Bạn cũng nên có hiểu biết cơ bản về các nguyên tắc cơ bản về mã hóa.

Tôi có thể học Django mà không cần giao diện người dùng không?

Chẳng hạn như JS, HTML, CSS và những thứ khác. Nhưng không sao, chỉ cần học, thực hành và sau đó giải quyết. Bạn sẽ tiến bộ nhanh chóng. Có, bạn có thể học django mà không cần có bất kỳ kinh nghiệm nào về JavaScript .