Django là một khung Python cấp cao được thiết kế để phát triển web nhanh chóng, an toàn và có thể mở rộng. Django bao gồm hỗ trợ phong phú cho định tuyến URL, mẫu trang và làm việc với dữ liệu
Trong hướng dẫn Django này, bạn tạo một ứng dụng Django đơn giản với ba trang sử dụng một mẫu cơ sở chung. Bạn tạo ứng dụng này trong ngữ cảnh của Visual Studio Code để hiểu cách làm việc với Django trong thiết bị đầu cuối, trình chỉnh sửa và trình gỡ lỗi VS Code. Hướng dẫn này không khám phá các chi tiết khác nhau về chính Django, chẳng hạn như làm việc với các mô hình dữ liệu và tạo giao diện quản trị. Để được hướng dẫn về những khía cạnh đó, hãy tham khảo các liên kết tài liệu Django ở cuối hướng dẫn này
Bạn có thể tìm thấy dự án mã đã hoàn thành từ hướng dẫn Django này trên GitHub. python-sample-vscode-django-tutorial
Nếu bạn gặp bất kỳ vấn đề nào, bạn có thể tìm kiếm câu trả lời hoặc đặt câu hỏi trên tiện ích mở rộng Python Discussions Q&A
điều kiện tiên quyết
Để hoàn thành thành công hướng dẫn Django này, bạn phải thực hiện các bước sau [đây là các bước tương tự như trong hướng dẫn chung về Python]
Cài đặt tiện ích mở rộng Python
Cài đặt phiên bản Python 3 [để viết hướng dẫn này]. tùy chọn bao gồm
- [Tất cả các hệ điều hành] Tải xuống từ python. tổ chức; . 9. 1 nút xuất hiện đầu tiên trên trang [hoặc bất kỳ phiên bản mới nhất nào]
- [Linux] Bản cài đặt Python 3 tích hợp hoạt động tốt, nhưng để cài đặt các gói Python khác, bạn phải chạy
6 trong thiết bị đầu cuốipython manage.py migrate
- [macOS] Cài đặt thông qua Homebrew trên macOS bằng cách sử dụng
7 [không hỗ trợ cài đặt hệ thống của Python trên macOS]python manage.py migrate
- [Tất cả các hệ điều hành] Bản tải xuống từ Anaconda [dành cho mục đích khoa học dữ liệu]
Trên Windows, đảm bảo rằng vị trí của trình thông dịch Python của bạn được bao gồm trong biến môi trường PATH của bạn. Bạn có thể kiểm tra vị trí bằng cách chạy
8 tại dấu nhắc lệnh. Nếu không bao gồm thư mục của trình thông dịch Python, hãy mở Cài đặt Windows, tìm kiếm "môi trường", chọn Chỉnh sửa biến môi trường cho tài khoản của bạn, sau đó chỉnh sửa biến Đường dẫn để bao gồm thư mục đópython manage.py migrate
Tạo môi trường dự án cho hướng dẫn Django
Trong phần này, bạn tạo một môi trường ảo để cài đặt Django. Sử dụng môi trường ảo tránh cài đặt Django vào môi trường Python toàn cầu và cung cấp cho bạn quyền kiểm soát chính xác đối với các thư viện được sử dụng trong ứng dụng. Môi trường ảo cũng giúp bạn dễ dàng Tạo yêu cầu. txt cho môi trường
Trên hệ thống tệp của bạn, hãy tạo một thư mục dự án cho hướng dẫn này, chẳng hạn như
9python manage.py migrate
Trong thư mục đó, sử dụng lệnh sau [nếu phù hợp với máy tính của bạn] để tạo một môi trường ảo có tên
0 dựa trên trình thông dịch hiện tại của bạnPerforming system checks... System check identified no issues [0 silenced]. January 15, 2021 - 14:33:31 Django version 3.1.5, using settings 'web_project.settings' Starting development server at //127.0.0.1:8000/ Quit the server with CTRL-BREAK.
# Linux sudo apt-get install python3-venv # If needed python3 -m venv .venv source .venv/bin/activate # macOS python3 -m venv .venv source .venv/bin/activate # Windows py -3 -m venv .venv .venv\scripts\activate
Ghi chú. Sử dụng bản cài đặt Python stock khi chạy các lệnh trên. Nếu bạn sử dụng
1 từ bản cài đặt Anaconda, bạn sẽ thấy lỗi vì mô-đun ensurepip không khả dụng và môi trường ở trạng thái chưa hoàn thànhPerforming system checks... System check identified no issues [0 silenced]. January 15, 2021 - 14:33:31 Django version 3.1.5, using settings 'web_project.settings' Starting development server at //127.0.0.1:8000/ Quit the server with CTRL-BREAK.
Mở thư mục dự án trong Mã VS bằng cách chạy
2 hoặc bằng cách chạy Mã VS và sử dụng lệnh Tệp > Mở Thư mụcPerforming system checks... System check identified no issues [0 silenced]. January 15, 2021 - 14:33:31 Django version 3.1.5, using settings 'web_project.settings' Starting development server at //127.0.0.1:8000/ Quit the server with CTRL-BREAK.
Trong Mã VS, hãy mở Bảng lệnh [Xem > Bảng lệnh hoặc [ ⇧⌘P [Windows, Linux Ctrl+Shift+P]]]. Then select the Python: Select Interpreter command:
Lệnh hiển thị danh sách các trình thông dịch có sẵn mà Mã VS có thể định vị tự động [danh sách của bạn sẽ thay đổi; nếu bạn không thấy trình thông dịch mong muốn, hãy xem Định cấu hình môi trường Python]. Từ danh sách, chọn môi trường ảo trong thư mục dự án của bạn bắt đầu bằng
3 hoặcPerforming system checks... System check identified no issues [0 silenced]. January 15, 2021 - 14:33:31 Django version 3.1.5, using settings 'web_project.settings' Starting development server at //127.0.0.1:8000/ Quit the server with CTRL-BREAK.
4Performing system checks... System check identified no issues [0 silenced]. January 15, 2021 - 14:33:31 Django version 3.1.5, using settings 'web_project.settings' Starting development server at //127.0.0.1:8000/ Quit the server with CTRL-BREAK.
Chạy thiết bị đầu cuối. Tạo Terminal mới [ ⌃⇧` [Windows, Linux Ctrl+Shift+`]] from the Command Palette, which creates a terminal and automatically activates the virtual environment by running its activation script.
Ghi chú. Trên Windows, nếu loại thiết bị đầu cuối mặc định của bạn là PowerShell, bạn có thể gặp lỗi không thể chạy kích hoạt. ps1 vì tập lệnh đang chạy bị tắt trên hệ thống. Lỗi cung cấp liên kết để biết thông tin về cách cho phép tập lệnh. Nếu không, hãy sử dụng Terminal. Chọn Shell mặc định để đặt "Dấu nhắc lệnh" hoặc "Git Bash" làm mặc định của bạn
Môi trường đã chọn xuất hiện ở phía bên phải của thanh trạng thái Mã VS và thông báo ['. venv'. venv] chỉ báo cho bạn biết rằng bạn đang sử dụng môi trường ảo
Cập nhật pip trong môi trường ảo bằng cách chạy lệnh sau trong VS Code Terminal
0python manage.py migrate
Cài đặt Django trong môi trường ảo bằng cách chạy lệnh sau trong VS Code Terminal
1python manage.py migrate
Bây giờ, bạn đã có một môi trường độc lập sẵn sàng để viết mã Django. Mã VS tự động kích hoạt môi trường khi bạn sử dụng Terminal. Tạo Terminal mới [ ⌃⇧` [Windows, Linux Ctrl+Shift+`]]. If you open a separate command prompt or terminal, activate the environment by running
Performing system checks...
System check identified no issues [0 silenced].
January 15, 2021 - 14:33:31
Django version 3.1.5, using settings 'web_project.settings'
Starting development server at //127.0.0.1:8000/
Quit the server with CTRL-BREAK.
5 [Linux/macOS] or Performing system checks...
System check identified no issues [0 silenced].
January 15, 2021 - 14:33:31
Django version 3.1.5, using settings 'web_project.settings'
Starting development server at //127.0.0.1:8000/
Quit the server with CTRL-BREAK.
6 [Windows]. You know the environment is activated when the command prompt shows [.venv] at the beginning.Tạo và chạy một ứng dụng Django tối thiểu
Theo thuật ngữ Django, một "Django project" bao gồm một số tệp cấu hình cấp trang web, cùng với một hoặc nhiều "ứng dụng" mà bạn triển khai tới một máy chủ lưu trữ web để tạo một ứng dụng web đầy đủ. Một dự án Django có thể chứa nhiều ứng dụng, mỗi ứng dụng thường có một chức năng độc lập trong dự án và cùng một ứng dụng có thể có trong nhiều dự án Django. Về phần mình, một ứng dụng chỉ là một gói Python tuân theo các quy ước nhất định mà Django mong đợi
Sau đó, để tạo một ứng dụng Django tối thiểu, trước tiên, cần tạo dự án Django để đóng vai trò là vùng chứa cho ứng dụng, sau đó tự tạo ứng dụng. Đối với cả hai mục đích, bạn sử dụng tiện ích quản trị Django,
Performing system checks...
System check identified no issues [0 silenced].
January 15, 2021 - 14:33:31
Django version 3.1.5, using settings 'web_project.settings'
Starting development server at //127.0.0.1:8000/
Quit the server with CTRL-BREAK.
7, được cài đặt khi bạn cài đặt gói DjangoTạo dự án Django
Trong VS Code Terminal nơi môi trường ảo của bạn được kích hoạt, hãy chạy lệnh sau
5python manage.py migrate
Lệnh
8 này giả định [bằng cách sử dụngPerforming system checks... System check identified no issues [0 silenced]. January 15, 2021 - 14:33:31 Django version 3.1.5, using settings 'web_project.settings' Starting development server at //127.0.0.1:8000/ Quit the server with CTRL-BREAK.
9 ở cuối] rằng thư mục hiện tại là thư mục dự án của bạn và tạo các mục sau trong đóPerforming system checks... System check identified no issues [0 silenced]. January 15, 2021 - 14:33:31 Django version 3.1.5, using settings 'web_project.settings' Starting development server at //127.0.0.1:8000/ Quit the server with CTRL-BREAK.
80. Tiện ích quản trị dòng lệnh Django cho dự án. Bạn chạy các lệnh quản trị cho dự án bằng cách sử dụngpython manage.py migrate
81python manage.py migrate
Một thư mục con có tên là
82, chứa các tệp saupython manage.py migrate
83. một tệp trống cho Python biết rằng thư mục này là một gói Pythonpython manage.py migrate
84. một điểm vào cho các máy chủ web tương thích với ASGI để phục vụ dự án của bạn. Bạn thường để nguyên tệp này vì nó cung cấp móc nối cho các máy chủ web sản xuấtpython manage.py migrate
85. chứa các cài đặt cho dự án Django mà bạn sửa đổi trong quá trình phát triển ứng dụng webpython manage.py migrate
86. chứa mục lục cho dự án Django mà bạn cũng sửa đổi trong quá trình phát triểnpython manage.py migrate
87. một điểm vào cho các máy chủ web tương thích với WSGI để phục vụ dự án của bạn. Bạn thường để nguyên tệp này vì nó cung cấp móc nối cho các máy chủ web sản xuấtpython manage.py migrate
Tạo cơ sở dữ liệu phát triển trống bằng cách chạy lệnh sau
python manage.py migrate
Khi bạn chạy máy chủ lần đầu tiên, nó sẽ tạo cơ sở dữ liệu SQLite mặc định trong tệp
88 dành cho mục đích phát triển nhưng có thể được sử dụng trong sản xuất cho các ứng dụng web có khối lượng thấp. Để biết thêm thông tin về cơ sở dữ liệu, hãy xem phần Các loại cơ sở dữ liệupython manage.py migrate
Để xác minh dự án Django, hãy đảm bảo rằng môi trường ảo của bạn đã được kích hoạt, sau đó khởi động máy chủ phát triển của Django bằng lệnh
89. Máy chủ chạy trên cổng mặc định 8000 và bạn thấy đầu ra như đầu ra sau trong cửa sổ đầu cuốipython manage.py migrate
Performing system checks... System check identified no issues [0 silenced]. January 15, 2021 - 14:33:31 Django version 3.1.5, using settings 'web_project.settings' Starting development server at //127.0.0.1:8000/ Quit the server with CTRL-BREAK.
Máy chủ web tích hợp của Django chỉ dành cho mục đích phát triển cục bộ. Tuy nhiên, khi bạn triển khai một máy chủ web, Django sẽ sử dụng máy chủ web của máy chủ thay thế. Các mô-đun
87 vàpython manage.py migrate
84 trong dự án Django đảm nhiệm việc kết nối với các máy chủ sản xuấtpython manage.py migrate
Nếu bạn muốn sử dụng một cổng khác với 8000 mặc định, hãy chỉ định số cổng trên dòng lệnh, chẳng hạn như
22python manage.py migrate
Ctrl+click URL
23 trong cửa sổ đầu ra của thiết bị đầu cuối để mở trình duyệt mặc định của bạn tới địa chỉ đó. Nếu Django được cài đặt đúng cách và dự án hợp lệ, bạn sẽ thấy trang mặc định hiển thị bên dưới. Cửa sổ đầu ra của thiết bị đầu cuối Mã VS cũng hiển thị nhật ký máy chủ.python manage.py migrate
Khi bạn hoàn tất, hãy đóng cửa sổ trình duyệt và dừng máy chủ trong Mã VS bằng cách sử dụng Ctrl+C như được chỉ ra trong đầu ra của thiết bị đầu cuối .
Tạo một ứng dụng Django
Trong VS Code Terminal với môi trường ảo được kích hoạt, hãy chạy lệnh
24 của tiện ích quản trị trong thư mục dự án của bạn [nơi chứapython manage.py migrate
80]python manage.py migrate
8python manage.py migrate
Lệnh tạo một thư mục có tên là
26 chứa một số tệp mã và một thư mục con. Trong số này, bạn thường xuyên làm việc vớipython manage.py migrate
27 [chứa các hàm xác định trang trong ứng dụng web của bạn] vàpython manage.py migrate
28 [chứa các lớp xác định đối tượng dữ liệu của bạn]. Thư mụcpython manage.py migrate
29 được tiện ích quản trị của Django sử dụng để quản lý các phiên bản cơ sở dữ liệu như sẽ thảo luận sau trong hướng dẫn này. Ngoài ra còn có các tệppython manage.py migrate
10 [cấu hình ứng dụng],Performing system checks... System check identified no issues [0 silenced]. January 15, 2021 - 14:33:31 Django version 3.1.5, using settings 'web_project.settings' Starting development server at //127.0.0.1:8000/ Quit the server with CTRL-BREAK.
11 [để tạo giao diện quản trị] vàPerforming system checks... System check identified no issues [0 silenced]. January 15, 2021 - 14:33:31 Django version 3.1.5, using settings 'web_project.settings' Starting development server at //127.0.0.1:8000/ Quit the server with CTRL-BREAK.
12 [để tạo thử nghiệm], không được đề cập ở đâyPerforming system checks... System check identified no issues [0 silenced]. January 15, 2021 - 14:33:31 Django version 3.1.5, using settings 'web_project.settings' Starting development server at //127.0.0.1:8000/ Quit the server with CTRL-BREAK.
Sửa đổi
13 để khớp với mã sau, tạo một chế độ xem duy nhất cho trang chủ của ứng dụngPerforming system checks... System check identified no issues [0 silenced]. January 15, 2021 - 14:33:31 Django version 3.1.5, using settings 'web_project.settings' Starting development server at //127.0.0.1:8000/ Quit the server with CTRL-BREAK.
2python manage.py migrate
Tạo một tệp,
14, với nội dung bên dưới. TệpPerforming system checks... System check identified no issues [0 silenced]. January 15, 2021 - 14:33:31 Django version 3.1.5, using settings 'web_project.settings' Starting development server at //127.0.0.1:8000/ Quit the server with CTRL-BREAK.
86 là nơi bạn chỉ định các mẫu để định tuyến các URL khác nhau tới các chế độ xem phù hợp của chúng. Mã bên dưới chứa một tuyến đường để ánh xạ URL gốc của ứng dụng [python manage.py migrate
16] tới hàmPerforming system checks... System check identified no issues [0 silenced]. January 15, 2021 - 14:33:31 Django version 3.1.5, using settings 'web_project.settings' Starting development server at //127.0.0.1:8000/ Quit the server with CTRL-BREAK.
17 mà bạn vừa thêm vàoPerforming system checks... System check identified no issues [0 silenced]. January 15, 2021 - 14:33:31 Django version 3.1.5, using settings 'web_project.settings' Starting development server at //127.0.0.1:8000/ Quit the server with CTRL-BREAK.
13Performing system checks... System check identified no issues [0 silenced]. January 15, 2021 - 14:33:31 Django version 3.1.5, using settings 'web_project.settings' Starting development server at //127.0.0.1:8000/ Quit the server with CTRL-BREAK.
1Performing system checks... System check identified no issues [0 silenced]. January 15, 2021 - 14:33:31 Django version 3.1.5, using settings 'web_project.settings' Starting development server at //127.0.0.1:8000/ Quit the server with CTRL-BREAK.
Thư mục
82 cũng chứa tệppython manage.py migrate
86, đây là nơi thực sự xử lý việc định tuyến URL. Mởpython manage.py migrate
41 và sửa đổi nó để phù hợp với đoạn mã sau [bạn có thể giữ lại các nhận xét hướng dẫn nếu muốn]. Mã này kéo vào# Linux sudo apt-get install python3-venv # If needed python3 -m venv .venv source .venv/bin/activate # macOS python3 -m venv .venv source .venv/bin/activate # Windows py -3 -m venv .venv .venv\scripts\activate
14 của ứng dụng bằng cách sử dụngPerforming system checks... System check identified no issues [0 silenced]. January 15, 2021 - 14:33:31 Django version 3.1.5, using settings 'web_project.settings' Starting development server at //127.0.0.1:8000/ Quit the server with CTRL-BREAK.
43, giúp giữ các tuyến đường của ứng dụng nằm trong ứng dụng. Sự tách biệt này hữu ích khi một dự án chứa nhiều ứng dụng# Linux sudo apt-get install python3-venv # If needed python3 -m venv .venv source .venv/bin/activate # macOS python3 -m venv .venv source .venv/bin/activate # Windows py -3 -m venv .venv .venv\scripts\activate
4# Linux sudo apt-get install python3-venv # If needed python3 -m venv .venv source .venv/bin/activate # macOS python3 -m venv .venv source .venv/bin/activate # Windows py -3 -m venv .venv .venv\scripts\activate
Lưu tất cả các tệp đã sửa đổi
Trong VS Code Terminal, một lần nữa với môi trường ảo được kích hoạt, hãy chạy máy chủ phát triển với
89 và mở trình duyệt tớipython manage.py migrate
23 để xem trang hiển thị "Xin chào, Django"python manage.py migrate
Tạo hồ sơ khởi chạy trình gỡ lỗi
Có thể bạn đang tự hỏi liệu có cách nào dễ dàng hơn để chạy máy chủ và kiểm tra ứng dụng mà không cần gõ
python manage.py migrate
89 mỗi lần không. May mắn thay, có. Bạn có thể tạo một hồ sơ khởi chạy tùy chỉnh trong Mã VS, cũng được sử dụng cho bài tập gỡ lỗi không thể tránh khỏiChuyển sang chế độ xem Chạy trong Mã VS [sử dụng thanh hoạt động bên trái hoặc F5 ]. Bạn có thể thấy thông báo "Để tùy chỉnh Chạy và Gỡ lỗi, hãy tạo khởi chạy. tập tin json". Điều này có nghĩa là bạn chưa có tệp
47 chứa cấu hình gỡ lỗi. Mã VS có thể tạo điều đó cho bạn nếu bạn nhấp vào tạo khởi chạy. liên kết tệp json.# Linux sudo apt-get install python3-venv # If needed python3 -m venv .venv source .venv/bin/activate # macOS python3 -m venv .venv source .venv/bin/activate # Windows py -3 -m venv .venv .venv\scripts\activate
Chọn liên kết và Mã VS sẽ nhắc cấu hình gỡ lỗi. Chọn Django từ danh sách thả xuống và Mã VS sẽ tạo một tệp
47 mới với cấu hình chạy Django. Tệp# Linux sudo apt-get install python3-venv # If needed python3 -m venv .venv source .venv/bin/activate # macOS python3 -m venv .venv source .venv/bin/activate # Windows py -3 -m venv .venv .venv\scripts\activate
47 chứa một số cấu hình gỡ lỗi, mỗi cấu hình là một đối tượng JSON riêng biệt trong mảng# Linux sudo apt-get install python3-venv # If needed python3 -m venv .venv source .venv/bin/activate # macOS python3 -m venv .venv source .venv/bin/activate # Windows py -3 -m venv .venv .venv\scripts\activate
000python manage.py migrate
Cuộn xuống và kiểm tra cấu hình với tên "Python. Django"
00python manage.py migrate
Cấu hình này yêu cầu Mã VS chạy
001 bằng cách sử dụng trình thông dịch Python đã chọn và các đối số trong danh sáchpython manage.py migrate
002. Sau đó, khởi chạy trình gỡ lỗi Mã VS với cấu hình này cũng giống như chạypython manage.py migrate
89 trong Thiết bị đầu cuối mã VS với môi trường ảo được kích hoạt của bạn. [Bạn có thể thêm số cổng nhưpython manage.py migrate
004 vàopython manage.py migrate
002 nếu muốn. ] Mục nhậppython manage.py migrate
006 cũng yêu cầu Mã VS cho phép gỡ lỗi các mẫu trang Django mà bạn sẽ thấy sau trong hướng dẫn nàypython manage.py migrate
Kiểm tra cấu hình bằng cách chọn lệnh menu Chạy > Bắt đầu gỡ lỗi hoặc chọn mũi tên Bắt đầu gỡ lỗi màu lục bên cạnh danh sách [ F5 ].
Ctrl+nhấp URL
23 trong cửa sổ đầu ra của thiết bị đầu cuối để mở trình duyệt và xem ứng dụng có đang chạy bình thường không.python manage.py migrate
Đóng trình duyệt và dừng trình gỡ lỗi khi bạn hoàn tất. Để dừng trình gỡ lỗi, hãy sử dụng nút Dừng trên thanh công cụ [hình vuông màu đỏ] hoặc lệnh Chạy > Dừng gỡ lỗi [ ⇧F5 [Windows, Linux Shift+F5]].
Giờ đây, bạn có thể sử dụng Chạy > Bắt đầu gỡ lỗi bất cứ lúc nào để kiểm tra ứng dụng, điều này cũng có lợi ích là tự động lưu tất cả các tệp đã sửa đổi
Khám phá trình gỡ lỗi
Gỡ lỗi cho bạn cơ hội tạm dừng một chương trình đang chạy trên một dòng mã cụ thể. Khi một chương trình bị tạm dừng, bạn có thể kiểm tra các biến, chạy mã trong bảng điều khiển Gỡ lỗi và nếu không thì tận dụng các tính năng được mô tả trên Gỡ lỗi. Chạy trình gỡ lỗi cũng tự động lưu mọi tệp đã sửa đổi trước khi phiên gỡ lỗi bắt đầu
Trước khi bạn bắt đầu. Đảm bảo rằng bạn đã dừng ứng dụng đang chạy ở cuối phần trước bằng cách sử dụng Ctrl+C trong thiết bị đầu cuối. Nếu bạn để ứng dụng chạy trong một thiết bị đầu cuối, ứng dụng đó sẽ tiếp tục sở hữu cổng. Do đó, khi bạn chạy ứng dụng trong trình gỡ lỗi bằng cùng một cổng, ứng dụng đang chạy ban đầu sẽ xử lý tất cả các yêu cầu và bạn sẽ không thấy bất kỳ hoạt động nào trong ứng dụng được gỡ lỗi và chương trình sẽ không dừng tại các điểm dừng. Nói cách khác, nếu trình gỡ lỗi dường như không hoạt động, hãy đảm bảo rằng không có phiên bản ứng dụng nào khác đang chạy.
Trong
14, thêm một tuyến đường vào danh sáchPerforming system checks... System check identified no issues [0 silenced]. January 15, 2021 - 14:33:31 Django version 3.1.5, using settings 'web_project.settings' Starting development server at //127.0.0.1:8000/ Quit the server with CTRL-BREAK.
009python manage.py migrate
01python manage.py migrate
Đối số đầu tiên của
8 định nghĩa một route "hello/" chấp nhận một chuỗi biến có tên là name. Chuỗi được chuyển đến hàmpython manage.py migrate
011 được chỉ định trong đối số thứ hai chopython manage.py migrate
8python manage.py migrate
Các tuyến URL phân biệt chữ hoa chữ thường. Ví dụ: tuyến đường
013 khác với tuyến đườngpython manage.py migrate
014. Nếu bạn muốn cùng một chức năng xem xử lý cả hai, hãy xác định đường dẫn cho từng biến thểpython manage.py migrate
Thay thế nội dung của
27 bằng mã sau để xác định hàmpython manage.py migrate
016 mà bạn có thể thực hiện trong trình gỡ lỗipython manage.py migrate
02python manage.py migrate
Biến
017 được xác định trong định tuyến URL được cung cấp làm đối số cho hàmpython manage.py migrate
016. Như được mô tả trong các nhận xét mã, luôn lọc thông tin tùy ý do người dùng cung cấp để tránh các cuộc tấn công khác nhau vào ứng dụng của bạn. Trong trường hợp này, mã lọc đối số tên chỉ chứa các chữ cái, tránh đưa vào các ký tự điều khiển, HTML, v.v. [Khi bạn sử dụng các mẫu trong phần tiếp theo, Django sẽ tự động lọc và bạn không cần mã này. ]python manage.py migrate
Đặt điểm ngắt ở dòng mã đầu tiên trong hàm
016 [python manage.py migrate
020] bằng cách thực hiện bất kỳ một trong các thao tác saupython manage.py migrate
- Khi con trỏ nằm trên dòng đó, hãy nhấn F9 hoặc,
- Với con trỏ trên dòng đó, chọn lệnh menu Run > Toggle Breakpoint, hoặc,
- Nhấp trực tiếp vào lề bên trái của số dòng [dấu chấm màu đỏ mờ xuất hiện khi di chuột vào đó]
Điểm ngắt xuất hiện dưới dạng chấm đỏ ở lề trái
Khởi động trình gỡ lỗi bằng cách chọn lệnh menu Chạy > Bắt đầu gỡ lỗi hoặc chọn mũi tên Bắt đầu gỡ lỗi màu lục bên cạnh danh sách [ F5 ].
Quan sát rằng thanh trạng thái thay đổi màu sắc để biểu thị gỡ lỗi
Một thanh công cụ sửa lỗi [hiển thị bên dưới] cũng xuất hiện trong Mã VS chứa các lệnh theo thứ tự sau. Tạm dừng [hoặc Tiếp tục, F5 ], Bước qua [ F10 ], . Xem gỡ lỗi Mã VS để biết mô tả của từng lệnh. F11], Step Out [⇧F11 [Windows, Linux Shift+F11]], Restart [⇧⌘F5 [Windows, Linux Ctrl+Shift+F5]], and Stop [⇧F5 [Windows, Linux Shift+F5]]. See VS Code debugging for a description of each command.
Đầu ra xuất hiện trong thiết bị đầu cuối "Bảng điều khiển gỡ lỗi Python". Mở trình duyệt và điều hướng đến
021. Trước khi trang hiển thị, Mã VS tạm dừng chương trình tại điểm dừng bạn đã đặt. Mũi tên nhỏ màu vàng trên điểm dừng cho biết đây là dòng mã tiếp theo sẽ chạypython manage.py migrate
Sử dụng Step Over để chạy câu lệnh
020python manage.py migrate
Ở phía bên trái của cửa sổ Mã VS, bạn sẽ thấy ngăn Biến hiển thị các biến cục bộ, chẳng hạn như
023, cũng như các đối số, chẳng hạn nhưpython manage.py migrate
017. Bên dưới đó là các ô dành cho Đồng hồ, Ngăn xếp cuộc gọi và Điểm ngắt [xem gỡ lỗi Mã VS để biết chi tiết]. Trong phần Người dân địa phương, hãy thử mở rộng các giá trị khác nhau. Bạn cũng có thể bấm đúp vào các giá trị [hoặc sử dụng Enter [Windows, Linux F2]] to modify them. Changing variables such aspython manage.py migrate
023, however, can break the program. Developers typically make changes only to correct values when the code didn't produce the right value to begin with.python manage.py migrate
Khi một chương trình bị tạm dừng, bảng điều khiển Gỡ lỗi [khác với "Bảng điều khiển gỡ lỗi Python" trong bảng Terminal] cho phép bạn thử nghiệm các biểu thức và thử các đoạn mã bằng trạng thái hiện tại của chương trình. Ví dụ: khi bạn đã bước qua dòng
020, bạn có thể thử nghiệm với các định dạng ngày/giờ khác nhau. Trong trình chỉnh sửa, chọn mã có nội dungpython manage.py migrate
027, sau đó nhấp chuột phải và chọn Gỡ lỗi. Đánh giá để gửi mã đó tới bảng điều khiển gỡ lỗi, nơi mã sẽ chạypython manage.py migrate
03python manage.py migrate
Mẹo. Bảng điều khiển gỡ lỗi cũng hiển thị các ngoại lệ từ bên trong ứng dụng có thể không xuất hiện trong thiết bị đầu cuối. Ví dụ: nếu bạn thấy thông báo "Tạm dừng do ngoại lệ" trong khu vực Ngăn xếp cuộc gọi của chế độ xem Chạy và gỡ lỗi, hãy chuyển sang Bảng điều khiển gỡ lỗi để xem thông báo ngoại lệ
Sao chép dòng đó vào dấu nhắc > ở cuối bảng điều khiển gỡ lỗi và thử thay đổi định dạng
04python manage.py migrate
Quay thêm vài dòng mã, nếu muốn thì chọn Tiếp tục [ F5 ] để chương trình chạy. Cửa sổ trình duyệt hiển thị kết quả.
Thay đổi dòng trong mã để sử dụng định dạng ngày giờ khác, ví dụ:
028, sau đó lưu tệp. Máy chủ Django sẽ tự động tải lại, nghĩa là các thay đổi sẽ được áp dụng mà không cần khởi động lại trình gỡ lỗi. Làm mới trang trên trình duyệt để xem cập nhậtpython manage.py migrate
Đóng trình duyệt và dừng trình gỡ lỗi khi bạn hoàn tất. Để dừng trình gỡ lỗi, hãy sử dụng nút Dừng trên thanh công cụ [hình vuông màu đỏ] hoặc lệnh Chạy > Dừng gỡ lỗi [ ⇧F5 [Windows, Linux Shift+F5]].
Mẹo. Để dễ dàng điều hướng liên tục đến một URL cụ thể như
021, hãy xuất URL đó bằng cách sử dụng câu lệnhpython manage.py migrate
030 ở đâu đó trong một tệp nhưpython manage.py migrate
27. URL xuất hiện trong VS Code Terminal nơi bạn có thể sử dụng Ctrl+click để mở trong trình duyệt.python manage.py migrate
Vào lệnh Definition và Peek Definition
Trong quá trình làm việc với Django hoặc bất kỳ thư viện nào khác, bạn có thể muốn tự kiểm tra mã trong các thư viện đó. Mã VS cung cấp hai lệnh thuận tiện điều hướng trực tiếp đến định nghĩa của các lớp và các đối tượng khác trong bất kỳ mã nào
Chuyển đến Định nghĩa nhảy từ mã của bạn sang mã xác định một đối tượng. Ví dụ: trong
27, nhấp chuột phải vàopython manage.py migrate
033 trong hàmpython manage.py migrate
034 và chọn Chuyển đến Định nghĩa [hoặc sử dụng F12 ], điều hướng đến định nghĩa lớp .python manage.py migrate
Định nghĩa Peek [ ⌥F12 [Windows Alt+F12, Linux Ctrl+Shift+F10], also on the right-click context menu], is similar, but displays the class definition directly in the editor [making space in the editor window to avoid obscuring any code]. Press Escape để đóng cửa sổ Peek hoặc sử dụng dấu x ở góc trên bên phải.
Sử dụng mẫu để hiển thị trang
Ứng dụng bạn đã tạo cho đến thời điểm này trong hướng dẫn này chỉ tạo các trang web văn bản thuần túy từ mã Python. Mặc dù có thể tạo HTML trực tiếp trong mã, nhưng các nhà phát triển tránh thực hành như vậy vì nó mở ứng dụng cho các cuộc tấn công kịch bản chéo trang [XSS]. Ví dụ, trong hàm
python manage.py migrate
016 của hướng dẫn này, người ta có thể nghĩ đến việc định dạng đầu ra bằng mã với thứ gì đó giống như python manage.py migrate
036, trong đó kết quả trong python manage.py migrate
037 được cung cấp trực tiếp cho trình duyệt. Việc mở này cho phép kẻ tấn công đặt HTML độc hại, bao gồm cả mã JavaScript, vào URL kết thúc bằng python manage.py migrate
038 và do đó sẽ được chạy trong trình duyệtMột cách thực hành tốt hơn nhiều là loại bỏ hoàn toàn HTML khỏi mã của bạn bằng cách sử dụng các mẫu để mã của bạn chỉ liên quan đến các giá trị dữ liệu chứ không liên quan đến kết xuất
Trong Django, mẫu là một tệp HTML chứa các trình giữ chỗ cho các giá trị mà mã cung cấp trong thời gian chạy. Sau đó, công cụ tạo khuôn mẫu Django đảm nhận việc thay thế khi hiển thị trang và cung cấp tính năng thoát tự động để ngăn chặn các cuộc tấn công XSS [nghĩa là nếu bạn đã thử sử dụng HTML trong một giá trị dữ liệu, bạn sẽ thấy HTML chỉ được hiển thị dưới dạng văn bản thuần túy]. Do đó, mã chỉ liên quan đến các giá trị dữ liệu và bản mẫu chỉ liên quan đến đánh dấu. Các mẫu Django cung cấp các tùy chọn linh hoạt, chẳng hạn như kế thừa mẫu, cho phép bạn xác định một trang cơ sở với đánh dấu chung và sau đó xây dựng trên cơ sở đó với các bổ sung dành riêng cho từng trang
Trong phần này, bạn bắt đầu bằng cách tạo một trang duy nhất bằng cách sử dụng một mẫu. Trong các phần tiếp theo, bạn định cấu hình ứng dụng để phân phối tệp tĩnh, sau đó tạo nhiều trang cho ứng dụng, mỗi trang chứa thanh điều hướng từ mẫu cơ sở. Các mẫu Django cũng hỗ trợ luồng điều khiển và phép lặp, như bạn thấy sau trong hướng dẫn này trong ngữ cảnh gỡ lỗi mẫu
Trong tệp
039, tìm danh sáchpython manage.py migrate
040 và thêm mục nhập sau, điều này đảm bảo dự án biết về ứng dụng để có thể xử lý việc tạo khuôn mẫupython manage.py migrate
05python manage.py migrate
Bên trong thư mục
26, tạo một thư mục có tên làpython manage.py migrate
042, sau đó tạo một thư mục con khác có tên làpython manage.py migrate
26 để khớp với tên ứng dụng [cấu trúc thư mục hai tầng này là quy ước điển hình của Django]python manage.py migrate
Trong thư mục
044, tạo một tệp tên làpython manage.py migrate
045 với nội dung bên dưới. Mẫu này chứa hai trình giữ chỗ cho các giá trị dữ liệu có tên là "tên" và "ngày", được phân định bằng các cặp dấu ngoặc nhọn,python manage.py migrate
046 vàpython manage.py migrate
047. Tất cả văn bản bất biến khác là một phần của mẫu, cùng với đánh dấu định dạng [chẳng hạn nhưpython manage.py migrate
048]. Như bạn có thể thấy, trình giữ chỗ mẫu cũng có thể bao gồm định dạng, biểu thức sau dấu ngoặc kép ký hiệupython manage.py migrate
049, trong trường hợp này là sử dụng bộ lọc ngày và bộ lọc thời gian tích hợp sẵn của Django. Sau đó, mã chỉ cần chuyển giá trị ngày giờ thay vì chuỗi được định dạng trướcpython manage.py migrate
06python manage.py migrate
Ở đầu
27, hãy thêm câu lệnh nhập saupython manage.py migrate
07python manage.py migrate
Cũng trong
27, hãy sửa đổi hàmpython manage.py migrate
016 để sử dụng phương pháppython manage.py migrate
053 để tải mẫu và cung cấp ngữ cảnh mẫu. Bối cảnh là tập hợp các biến để sử dụng trong mẫu. Hàmpython manage.py migrate
054 lấy đối tượng yêu cầu, theo sau là đường dẫn đến mẫu liên quan đến thư mụcpython manage.py migrate
042, sau đó là đối tượng bối cảnh. [Các nhà phát triển thường đặt tên cho các mẫu giống như các chức năng sử dụng chúng, nhưng không bắt buộc phải có tên phù hợp vì bạn luôn tham chiếu đến tên tệp chính xác trong mã của mình. ]python manage.py migrate
08python manage.py migrate
Bạn có thể thấy rằng mã bây giờ đơn giản hơn nhiều và chỉ liên quan đến các giá trị dữ liệu, vì tất cả đánh dấu và định dạng đều có trong mẫu
Khởi động chương trình [bên trong hoặc bên ngoài trình gỡ lỗi, sử dụng ⌃F5 [Windows, Linux . ]], navigate to a /hello/name URL, and observe the results.
Ngoài ra, hãy thử điều hướng đến URL /hello/name bằng cách sử dụng tên như
056 để xem Django tự động thoát tại nơi làm việc. Giá trị "tên" hiển thị dưới dạng văn bản thuần túy trong trình duyệt thay vì hiển thị một phần tử thực tếpython manage.py migrate
Phục vụ các tệp tĩnh
Tệp tĩnh là các phần nội dung mà ứng dụng web của bạn trả về nguyên trạng cho một số yêu cầu nhất định, chẳng hạn như tệp CSS. Cung cấp các tệp tĩnh yêu cầu danh sách
python manage.py migrate
040 trong python manage.py migrate
85 chứa python manage.py migrate
059, được bao gồm theo mặc địnhCung cấp các tệp tĩnh trong Django là một nghệ thuật, đặc biệt là khi triển khai vào sản xuất. Những gì được hiển thị ở đây là một cách tiếp cận đơn giản hoạt động với máy chủ phát triển Django và cả máy chủ sản xuất như Gunicorn. Tuy nhiên, việc xử lý đầy đủ các tệp tĩnh nằm ngoài phạm vi của hướng dẫn này, vì vậy để biết thêm thông tin, hãy xem Quản lý các tệp tĩnh trong tài liệu Django
Khi chuyển sang sản xuất, hãy điều hướng đến
python manage.py migrate
85, đặt python manage.py migrate
061 và thay đổi python manage.py migrate
062 để cho phép các máy chủ cụ thể. Điều này có thể dẫn đến công việc bổ sung khi sử dụng vùng chứa. Để biết chi tiết, xem Vấn đề 13Sẵn sàng ứng dụng cho các tệp tĩnh
Trong
41 của dự án, hãy thêm câu lệnh# Linux sudo apt-get install python3-venv # If needed python3 -m venv .venv source .venv/bin/activate # macOS python3 -m venv .venv source .venv/bin/activate # Windows py -3 -m venv .venv .venv\scripts\activate
064 saupython manage.py migrate
09python manage.py migrate
Trong cùng một tệp đó, hãy thêm dòng sau vào cuối, bao gồm các URL tệp tĩnh tiêu chuẩn vào danh sách mà dự án nhận ra
10python manage.py migrate
Tham khảo các tệp tĩnh trong một mẫu
Trong thư mục
26, tạo một thư mục có tên làpython manage.py migrate
066python manage.py migrate
Trong thư mục
066, tạo một thư mục con có tên làpython manage.py migrate
26, khớp với tên ứng dụngpython manage.py migrate
Lý do cho thư mục con bổ sung này là khi bạn triển khai dự án Django tới một máy chủ sản xuất, bạn thu thập tất cả các tệp tĩnh vào một thư mục duy nhất, sau đó được phục vụ bởi một máy chủ tệp tĩnh chuyên dụng. Thư mục con
069 đảm bảo rằng khi tệp tĩnh của ứng dụng được thu thập, chúng sẽ nằm trong thư mục con dành riêng cho ứng dụng và sẽ không xung đột với tệp từ các ứng dụng khác trong cùng một dự ánpython manage.py migrate
Trong thư mục
069, tạo một tệp tên làpython manage.py migrate
071 với nội dung như sau. Sau khi nhập mã này, hãy quan sát phần đánh dấu cú pháp mà Mã VS cung cấp cho các tệp CSS, bao gồm bản xem trước màupython manage.py migrate
11python manage.py migrate
Trong
072, thêm các dòng sau vào sau phần tửpython manage.py migrate
073. Thẻpython manage.py migrate
074 là bộ thẻ mẫu Django tùy chỉnh, cho phép bạn sử dụngpython manage.py migrate
075 để chỉ một tệp như biểu định kiểupython manage.py migrate
12python manage.py migrate
Cũng trong
072, thay thế phần tử nội dungpython manage.py migrate
077 bằng đánh dấu sau sử dụng kiểupython manage.py migrate
078 thay vì thẻpython manage.py migrate
048python manage.py migrate
13python manage.py migrate
Chạy ứng dụng, điều hướng đến URL /hello/name và quan sát thấy thông báo hiển thị màu xanh lam. Dừng ứng dụng khi bạn hoàn tất
Sử dụng lệnh thu thập
Đối với triển khai sản xuất, bạn thường thu thập tất cả các tệp tĩnh từ ứng dụng của mình vào một thư mục bằng cách sử dụng lệnh
python manage.py migrate
080. Sau đó, bạn có thể sử dụng một máy chủ tệp tĩnh chuyên dụng để phục vụ các tệp đó, điều này thường dẫn đến hiệu suất tổng thể tốt hơn. Các bước sau đây cho biết cách bộ sưu tập này được tạo, mặc dù bạn không sử dụng bộ sưu tập khi chạy với máy chủ phát triển DjangoTrong
039, hãy thêm dòng sau xác định vị trí nơi các tệp tĩnh được thu thập khi bạn sử dụng lệnhpython manage.py migrate
082python manage.py migrate
14python manage.py migrate
Trong Terminal, chạy lệnh
080 và quan sát rằngpython manage.py migrate
084 được sao chép vào thư mụcpython manage.py migrate
085 cấp cao nhất cùng vớipython manage.py migrate
80python manage.py migrate
Trong thực tế, hãy chạy
082 bất cứ khi nào bạn thay đổi các tệp tĩnh và trước khi triển khai vào sản xuấtpython manage.py migrate
Tạo nhiều mẫu mở rộng mẫu cơ sở
Bởi vì hầu hết các ứng dụng web có nhiều hơn một trang và vì những trang đó thường chia sẻ nhiều thành phần chung nên các nhà phát triển sẽ tách các thành phần chung đó thành một mẫu trang cơ sở mà sau đó các mẫu trang khác sẽ mở rộng. [Điều này còn được gọi là kế thừa mẫu, nghĩa là các trang mở rộng kế thừa các thành phần từ trang cơ sở. ]
Ngoài ra, vì bạn có thể sẽ tạo nhiều trang mở rộng cùng một mẫu nên sẽ hữu ích khi tạo một đoạn mã trong Mã VS để bạn có thể nhanh chóng khởi tạo các mẫu trang mới. Một đoạn mã giúp bạn tránh các thao tác sao chép-dán tẻ nhạt và dễ bị lỗi
Các phần sau đây đi qua các phần khác nhau của quá trình này
Tạo mẫu và kiểu trang cơ sở
Mẫu trang cơ sở trong Django chứa tất cả các phần được chia sẻ của một nhóm trang, bao gồm các tham chiếu đến tệp CSS, tệp tập lệnh, v.v. Các mẫu cơ sở cũng xác định một hoặc nhiều thẻ khối có nội dung mà các mẫu mở rộng dự kiến sẽ ghi đè. Thẻ khối được phân định bởi
python manage.py migrate
088 và python manage.py migrate
089 trong cả mẫu cơ sở và mẫu mở rộngCác bước sau minh họa việc tạo mẫu cơ sở
Trong thư mục
044, tạo một tệp có tênpython manage.py migrate
091 với nội dung bên dưới, chứa các khối có tên "tiêu đề" và "nội dung". Như bạn có thể thấy, đánh dấu xác định cấu trúc thanh điều hướng đơn giản với các liên kết đến Trang chủ, Giới thiệu và Liên hệ mà bạn tạo trong phần sau. Lưu ý việc sử dụng thẻpython manage.py migrate
092 của Django để tham chiếu đến các trang khác thông qua tên của các mẫu URL tương ứng thay vì theo đường dẫn tương đốipython manage.py migrate
15python manage.py migrate
Thêm các kiểu sau vào
093 bên dưới kiểu "thông báo" hiện có và lưu tệp. [Hướng dẫn này không cố gắng chứng minh thiết kế đáp ứng; những phong cách này chỉ tạo ra một kết quả khá thú vị. ]python manage.py migrate
16python manage.py migrate
Bạn có thể chạy ứng dụng tại thời điểm này, nhưng vì bạn chưa sử dụng mẫu cơ sở ở bất kỳ đâu và chưa thay đổi bất kỳ tệp mã nào nên kết quả vẫn giống như bước trước. Hoàn thành các phần còn lại để xem hiệu ứng cuối cùng
Tạo một đoạn mã
Vì ba trang bạn tạo trong phần tiếp theo mở rộng từ
python manage.py migrate
091, nên sẽ tiết kiệm thời gian tạo đoạn mã để khởi tạo tệp mẫu mới với tham chiếu thích hợp đến mẫu cơ sở. Một đoạn mã cung cấp một đoạn mã nhất quán từ một nguồn duy nhất, giúp tránh các lỗi có thể phát sinh khi sử dụng sao chép-dán từ mã hiện cóTrong Mã VS, chọn menu Tệp [Windows/Linux] hoặc Mã [macOS], sau đó chọn Tùy chọn > Đoạn mã người dùng
Trong danh sách hiện ra, chọn html. [Tùy chọn có thể xuất hiện dưới dạng "html. json" trong phần Đoạn mã hiện có của danh sách nếu bạn đã tạo đoạn mã trước đó. ]
Sau khi mã VS mở
095, hãy thêm mã bên dưới vào trong dấu ngoặc nhọn hiện có. [Các nhận xét giải thích, không được hiển thị ở đây, mô tả các chi tiết như cách dòngpython manage.py migrate
096 cho biết vị trí Mã VS đặt con trỏ sau khi chèn đoạn mã]python manage.py migrate
17python manage.py migrate
Lưu tệp
095 [ ⌘S [Windows, Linux Ctrl+S]].python manage.py migrate
Giờ đây, bất cứ khi nào bạn bắt đầu nhập tiền tố của đoạn mã, chẳng hạn như
098, Mã VS sẽ cung cấp đoạn mã dưới dạng tùy chọn tự động hoàn thành, như được hiển thị trong phần tiếp theo. Bạn cũng có thể sử dụng lệnh Chèn Đoạn mã để chọn một đoạn mã từ menupython manage.py migrate
Để biết thêm thông tin về các đoạn mã nói chung, hãy tham khảo Tạo đoạn mã
Sử dụng đoạn mã để thêm trang
Với đoạn mã tại chỗ, bạn có thể nhanh chóng tạo mẫu cho các trang Trang chủ, Giới thiệu và Liên hệ
Trong thư mục
044, tạo một tệp mới có tên làpython manage.py migrate
100, sau đó bắt đầu nhậppython manage.py migrate
098 để xem đoạn trích xuất hiện dưới dạng hoàn thànhpython manage.py migrate
Khi bạn chọn phần hoàn thành, mã của đoạn mã sẽ xuất hiện cùng với con trỏ trên điểm chèn của đoạn mã
Tại điểm chèn trong khối "tiêu đề", viết
102 và trong khối "nội dung", viếtpython manage.py migrate
103, sau đó lưu tệp. Những dòng này là những phần duy nhất của mẫu trang mở rộngpython manage.py migrate
Trong thư mục
044, tạopython manage.py migrate
105, sử dụng đoạn mã để chèn đánh dấu soạn sẵn, lần lượt chènpython manage.py migrate
106 vàpython manage.py migrate
107 vào khối "tiêu đề" và "nội dung", sau đó lưu tệppython manage.py migrate
Lặp lại bước trước đó để tạo
108 bằng cách sử dụngpython manage.py migrate
109 vàpython manage.py migrate
110python manage.py migrate
Trong
86 của ứng dụng, hãy thêm các tuyến đường cho các trang /about và /contact. Hãy lưu ý rằng đối sốpython manage.py migrate
017 của hàmpython manage.py migrate
8 xác định tên mà bạn tham chiếu đến trang trong thẻpython manage.py migrate
092 trong mẫupython manage.py migrate
18python manage.py migrate
Trong
27, thêm chức năng cho các tuyến đường /about và /contact tham chiếu đến các mẫu trang tương ứng của chúng. Đồng thời sửa đổi hàmpython manage.py migrate
034 để sử dụng mẫupython manage.py migrate
100python manage.py migrate
19python manage.py migrate
Chạy ứng dụng
Với tất cả các mẫu trang đã sẵn sàng, hãy lưu
python manage.py migrate
27, chạy ứng dụng và mở trình duyệt đến trang chủ để xem kết quả. Điều hướng giữa các trang để xác minh rằng các mẫu trang đang mở rộng đúng mẫu cơ sởLàm việc với dữ liệu, mô hình dữ liệu và di chuyển
Nhiều ứng dụng web hoạt động với thông tin được lưu trữ trong cơ sở dữ liệu và Django giúp dễ dàng biểu diễn các đối tượng trong cơ sở dữ liệu đó bằng các mô hình. Trong Django, một mô hình là một lớp Python, bắt nguồn từ
python manage.py migrate
119, đại diện cho một đối tượng cơ sở dữ liệu cụ thể, thường là một bảng. Bạn đặt các lớp này trong tệp python manage.py migrate
28 của ứng dụngVới Django, bạn hầu như chỉ làm việc với cơ sở dữ liệu của mình thông qua các mô hình mà bạn xác định trong mã. Sau đó, "di chuyển" của Django sẽ tự động xử lý tất cả các chi tiết của cơ sở dữ liệu cơ bản khi bạn phát triển các mô hình theo thời gian. Quy trình làm việc chung như sau
- Thay đổi mô hình trong tệp
28 của bạnpython manage.py migrate
- Chạy
122 để tạo tập lệnh trong thư mụcpython manage.py migrate
29 di chuyển cơ sở dữ liệu từ trạng thái hiện tại sang trạng thái mớipython manage.py migrate
- Chạy
124 để áp dụng tập lệnh vào cơ sở dữ liệu thực tếpython manage.py migrate
Tập lệnh di chuyển ghi lại một cách hiệu quả tất cả các thay đổi gia tăng mà bạn thực hiện đối với mô hình dữ liệu của mình theo thời gian. Bằng cách áp dụng di chuyển, Django cập nhật cơ sở dữ liệu để phù hợp với mô hình của bạn. Vì mỗi thay đổi gia tăng có tập lệnh riêng nên Django có thể tự động di chuyển bất kỳ phiên bản trước đó của cơ sở dữ liệu [bao gồm cả cơ sở dữ liệu mới] sang phiên bản hiện tại. Do đó, bạn chỉ cần quan tâm đến các mô hình của mình trong
python manage.py migrate
28, không bao giờ quan tâm đến lược đồ cơ sở dữ liệu cơ bản hoặc các tập lệnh di chuyển. Bạn để Django làm phần đóTrong mã cũng vậy, bạn chỉ làm việc với các lớp mô hình của mình để lưu trữ và truy xuất dữ liệu; . Một ngoại lệ là bạn có thể ghi dữ liệu vào cơ sở dữ liệu của mình bằng cách sử dụng lệnh loaddata của tiện ích quản trị Django. Tiện ích này thường dùng để khởi tạo một tập dữ liệu sau khi lệnh
python manage.py migrate
126 đã khởi tạo lược đồKhi sử dụng tệp
python manage.py migrate
88, bạn cũng có thể làm việc trực tiếp với cơ sở dữ liệu bằng công cụ như trình duyệt SQLite. Bạn có thể thêm hoặc xóa các bản ghi trong bảng bằng công cụ như vậy, nhưng tránh thực hiện các thay đổi đối với lược đồ cơ sở dữ liệu vì khi đó cơ sở dữ liệu sẽ không đồng bộ với các mô hình ứng dụng của bạn. Thay vào đó, hãy thay đổi mô hình, chạy python manage.py migrate
128, sau đó chạy python manage.py migrate
126Các loại cơ sở dữ liệu
Theo mặc định, Django bao gồm tệp
python manage.py migrate
88 cho cơ sở dữ liệu của ứng dụng phù hợp với công việc phát triển. Như được mô tả trên Khi nào nên sử dụng SQLite [sqlite. org], SQLite hoạt động tốt đối với các trang web có lưu lượng truy cập thấp đến trung bình với ít hơn 100 nghìn lần truy cập/ngày, nhưng không được khuyến nghị cho khối lượng lớn hơn. Nó cũng bị giới hạn trong một máy tính, vì vậy nó không thể được sử dụng trong bất kỳ trường hợp nhiều máy chủ nào như cân bằng tải và sao chép địa lýVì những lý do này, hãy cân nhắc sử dụng kho lưu trữ dữ liệu cấp sản xuất như PostgreSQL, MySQL và SQL Server. Để biết thông tin về hỗ trợ của Django cho các cơ sở dữ liệu khác, hãy xem Thiết lập cơ sở dữ liệu. Bạn cũng có thể sử dụng Azure SDK cho Python để hoạt động với các dịch vụ lưu trữ Azure như bảng và đốm màu
xác định mô hình
Một mô hình Django lại là một lớp Python bắt nguồn từ
python manage.py migrate
131, mà bạn đặt trong tệp python manage.py migrate
28 của ứng dụng. Trong cơ sở dữ liệu, mỗi mô hình sẽ tự động được cung cấp một trường ID duy nhất có tên là python manage.py migrate
133. Tất cả các trường khác được định nghĩa là thuộc tính của lớp bằng cách sử dụng các loại từ python manage.py migrate
134, chẳng hạn như python manage.py migrate
135 [văn bản giới hạn], python manage.py migrate
136 [văn bản không giới hạn], python manage.py migrate
137, python manage.py migrate
138, python manage.py migrate
139, python manage.py migrate
140, python manage.py migrate
141. python manage.py migrate
142, python manage.py migrate
143 và python manage.py migrate
144, trong số những người khác. [Xem tham chiếu trường Mô hình trong tài liệu Django để biết chi tiết. ]Mỗi trường có một số thuộc tính, như
python manage.py migrate
145. Thuộc tính python manage.py migrate
146 có nghĩa là trường này là tùy chọn; . Ngoài ra còn có một thuộc tính python manage.py migrate
148 giới hạn các giá trị thành các giá trị trong một mảng các bộ giá trị dữ liệu/giá trị hiển thịVí dụ: thêm lớp sau vào
python manage.py migrate
28 để xác định mô hình dữ liệu đại diện cho các mục nhập ngày tháng trong nhật ký tin nhắn đơn giảnpython manage.py migrate
50Một lớp mô hình có thể bao gồm các phương thức trả về các giá trị được tính từ các thuộc tính của lớp khác. Các mô hình thường bao gồm một phương thức
python manage.py migrate
150 trả về một biểu diễn chuỗi của thể hiệnDi chuyển cơ sở dữ liệu
Vì bạn đã thay đổi mô hình dữ liệu của mình bằng cách chỉnh sửa
python manage.py migrate
28, nên bạn cần tự cập nhật cơ sở dữ liệu. Trong Mã VS, mở Terminal với môi trường ảo được kích hoạt [sử dụng Terminal. Tạo lệnh Terminal mới, ⌃⇧` [Windows, Linux Ctrl+Shift+`]]], navigate to the project folder, and run the following commands:python manage.py migrate
51Hãy xem trong thư mục
python manage.py migrate
29 để xem các tập lệnh mà python manage.py migrate
128 tạo ra. Bạn cũng có thể xem chính cơ sở dữ liệu để biết rằng lược đồ đã được cập nhậtNếu bạn thấy lỗi khi chạy các lệnh, hãy đảm bảo rằng bạn không sử dụng thiết bị đầu cuối gỡ lỗi còn sót lại từ các bước trước, vì chúng có thể chưa kích hoạt môi trường ảo
Sử dụng cơ sở dữ liệu thông qua các mô hình
Với các mô hình của bạn tại chỗ và cơ sở dữ liệu đã được di chuyển, bạn có thể lưu trữ và truy xuất dữ liệu chỉ bằng các mô hình của mình. Trong phần này, bạn thêm một trang biểu mẫu vào ứng dụng mà qua đó bạn có thể ghi một tin nhắn. Sau đó, bạn sửa đổi trang chủ để hiển thị các thông báo đó. Vì bạn sửa đổi nhiều tệp mã ở đây, hãy chú ý đến các chi tiết
Trong thư mục
26 [nơi bạn cópython manage.py migrate
27], hãy tạo một tệp mới có tên làpython manage.py migrate
156 với mã sau, định nghĩa một biểu mẫu Django chứa một trường được lấy từ mô hình dữ liệu,python manage.py migrate
157python manage.py migrate
52python manage.py migrate
Trong thư mục
044, tạo một mẫu mới có tên làpython manage.py migrate
159 với các nội dung sau, giả sử rằng mẫu được cung cấp một biến có tên làpython manage.py migrate
160 để xác định phần thân của biểu mẫu. Sau đó, nó thêm một nút gửi có nhãn "Nhật ký"python manage.py migrate
53python manage.py migrate
Ghi chú. Thẻ
161 của Django cung cấp khả năng bảo vệ khỏi các hành vi giả mạo yêu cầu trên nhiều trang web. Xem Bảo vệ giả mạo yêu cầu trang web chéo trong tài liệu Django để biết chi tiếtpython manage.py migrate
Trong tệp
093 của ứng dụng, hãy thêm quy tắc để làm cho biểu mẫu nhập liệu rộng hơnpython manage.py migrate
54python manage.py migrate
Trong tệp
86 của ứng dụng, hãy thêm tuyến đường cho trang mớipython manage.py migrate
55python manage.py migrate
Trong
27, xác định chế độ xem có tên làpython manage.py migrate
165 [được gọi bằng tuyến URL]. Chế độ xem này xử lý cả hai trường hợp HTTP GET và POST. Trong trường hợp GET [phầnpython manage.py migrate
166], nó chỉ hiển thị biểu mẫu mà bạn đã xác định trong các bước trước. Trong trường hợp POST, nó truy xuất dữ liệu từ biểu mẫu vào một đối tượng dữ liệu [python manage.py migrate
078], đặt dấu thời gian, sau đó lưu đối tượng đó tại thời điểm nó được ghi vào cơ sở dữ liệupython manage.py migrate
56python manage.py migrate
Một bước nữa trước khi bạn sẵn sàng thử mọi thứ. Trong
168, thêm một liên kết trong div "navbar" cho trang ghi nhật ký tin nhắnpython manage.py migrate
57python manage.py migrate
Chạy ứng dụng và mở trình duyệt đến trang chủ. Chọn liên kết Thông báo nhật ký trên thanh điều hướng, liên kết này sẽ hiển thị trang nhật ký thông báo
Nhập tin nhắn, chọn Nhật ký và bạn sẽ được đưa trở lại trang chủ. Trang chủ chưa hiển thị bất kỳ thông báo đã ghi nào [mà bạn sẽ khắc phục trong giây lát]. Vui lòng đăng nhập thêm một vài tin nhắn nữa. Nếu bạn muốn, hãy xem qua cơ sở dữ liệu bằng công cụ như Trình duyệt SQLite để xem các bản ghi đã được tạo. Mở cơ sở dữ liệu dưới dạng chỉ đọc hoặc nếu không, hãy nhớ đóng cơ sở dữ liệu trước khi sử dụng ứng dụng, nếu không ứng dụng sẽ bị lỗi do cơ sở dữ liệu bị khóa
Dừng ứng dụng khi bạn hoàn tất
Bây giờ hãy sửa đổi trang chủ để hiển thị các thông báo đã ghi. Bắt đầu bằng cách thay thế nội dung của tệp
169 của ứng dụng bằng đánh dấu bên dưới. Mẫu này mong đợi một biến ngữ cảnh có tên làpython manage.py migrate
170. Nếu nó nhận được một [được kiểm tra bằng thẻpython manage.py migrate
171], thì nó sẽ lặp lại danh sách đó [thẻpython manage.py migrate
172] để tạo các hàng trong bảng cho mỗi thông báo. Mặt khác, trang chỉ ra rằng không có tin nhắn nào được ghi lạipython manage.py migrate
58python manage.py migrate
Trong
093, thêm một quy tắc để định dạng bảng một chútpython manage.py migrate
59python manage.py migrate
Trong
27, nhập lớppython manage.py migrate
175 chung của Django, mà chúng tôi sẽ sử dụng để triển khai trang chủpython manage.py migrate
0python manage.py migrate
Cũng trong
27, thay thế hàmpython manage.py migrate
034 bằng một lớp có tênpython manage.py migrate
178, bắt nguồn từpython manage.py migrate
175, lớp này liên kết chính nó với mô hìnhpython manage.py migrate
157 và triển khai hàmpython manage.py migrate
181 để tạo ngữ cảnh cho mẫupython manage.py migrate
1python manage.py migrate
Trong
86 của ứng dụng, hãy nhập mô hình dữ liệupython manage.py migrate
2python manage.py migrate
Cũng trong
86, hãy tạo một biến cho dạng xem mới, biến này truy xuất năm đối tượngpython manage.py migrate
157 gần đây nhất theo thứ tự giảm dần [nghĩa là nó truy vấn cơ sở dữ liệu], sau đó cung cấp tên cho dữ liệu trong ngữ cảnh mẫu [python manage.py migrate
170] và xác địnhpython manage.py migrate
3python manage.py migrate
Trong
86, sửa đổi đường dẫn đến trang chủ để sử dụng biếnpython manage.py migrate
187python manage.py migrate
4python manage.py migrate
Khởi động ứng dụng và mở trình duyệt đến trang chủ, lúc này sẽ hiển thị thông báo
Dừng ứng dụng khi bạn hoàn tất
Sử dụng trình gỡ lỗi với các mẫu trang
Như đã trình bày trong phần trước, các mẫu trang có thể chứa các chỉ thị thủ tục như
python manage.py migrate
172 và python manage.py migrate
171, thay vì chỉ các phần tử khai báo, thụ động như python manage.py migrate
092 và python manage.py migrate
191. Do đó, bạn có thể gặp lỗi lập trình bên trong các mẫu như với bất kỳ mã thủ tục nào khácMay mắn thay, Tiện ích mở rộng Python cho Mã VS cung cấp tính năng gỡ lỗi mẫu khi bạn có
python manage.py migrate
006 trong cấu hình gỡ lỗi [như bạn đã làm]. Các bước sau thể hiện khả năng nàyTrong
169, đặt các điểm dừng trên cả hai dòngpython manage.py migrate
171 vàpython manage.py migrate
172, như được biểu thị bằng các mũi tên màu vàng trong hình ảnh bên dướipython manage.py migrate
Chạy ứng dụng trong trình gỡ lỗi và mở trình duyệt đến trang chủ. [Nếu bạn đang chạy trình gỡ lỗi, bạn không phải khởi động lại ứng dụng sau khi đặt điểm ngắt; chỉ cần làm mới trang. ] Quan sát rằng Mã VS đột nhập vào trình gỡ lỗi trong mẫu trên câu lệnh
196 và hiển thị tất cả các biến ngữ cảnh trong khung Biếnpython manage.py migrate
Sử dụng lệnh Step Over [ F10 ] để duyệt qua mã mẫu. Quan sát xem trình gỡ lỗi có bước qua tất cả các câu lệnh khai báo và tạm dừng ở bất kỳ mã thủ tục nào không. Ví dụ: bước qua các vòng lặp
172 cho phép bạn kiểm tra từng giá trị trongpython manage.py migrate
078 và cho phép bạn chuyển đến các dòng nhưpython manage.py migrate
199.python manage.py migrate
Bạn cũng có thể làm việc với các biến trong bảng Debug Console. [Tuy nhiên, các bộ lọc Django như
500 hiện không khả dụng trong bảng điều khiển. ]python manage.py migrate
Khi bạn đã sẵn sàng, hãy chọn Tiếp tục [ F5 ] để hoàn tất việc chạy ứng dụng và xem trang được hiển thị trong trình duyệt. Dừng trình gỡ lỗi khi bạn hoàn tất.
Hoạt động tùy chọn
Các phần sau đây mô tả các bước bổ sung mà bạn có thể thấy hữu ích khi làm việc với Python và Visual Studio Code
Tạo một yêu cầu. txt cho môi trường
Khi bạn chia sẻ mã ứng dụng của mình thông qua kiểm soát nguồn hoặc một số phương tiện khác, việc sao chép tất cả các tệp trong môi trường ảo sẽ không hợp lý vì người nhận luôn có thể tự tạo lại môi trường đó
Theo đó, các nhà phát triển thường bỏ qua thư mục môi trường ảo khỏi kiểm soát nguồn và thay vào đó mô tả các phần phụ thuộc của ứng dụng bằng tệp
python manage.py migrate
501Mặc dù bạn có thể tạo tệp bằng tay, nhưng bạn cũng có thể sử dụng lệnh
python manage.py migrate
502 để tạo tệp dựa trên các thư viện chính xác được cài đặt trong môi trường được kích hoạtVới môi trường đã chọn của bạn được chọn bằng Python. Chọn lệnh Thông dịch viên, chạy Terminal. Tạo lệnh Terminal mới [ ⌃⇧` [Windows, Linux Ctrl+Shift+`]]] to open a terminal with that environment activated.
Trong thiết bị đầu cuối, hãy chạy
503 để tạo tệppython manage.py migrate
501 trong thư mục dự án của bạnpython manage.py migrate
Bất kỳ ai [hoặc bất kỳ máy chủ bản dựng nào] nhận được bản sao của dự án chỉ cần chạy lệnh
python manage.py migrate
505 để cài đặt lại các gói mà ứng dụng phụ thuộc vào trong môi trường hoạt độngGhi chú.
502 liệt kê tất cả các gói Python bạn đã cài đặt trong môi trường hiện tại, bao gồm các gói bạn hiện không sử dụng. Lệnh này cũng liệt kê các gói có số phiên bản chính xác mà bạn có thể muốn chuyển đổi thành các phạm vi để linh hoạt hơn trong tương lai. Để biết thêm thông tin, hãy xem Tệp yêu cầu trong tài liệu lệnh pippython manage.py migrate
Tạo một siêu người dùng và kích hoạt giao diện quản trị
Theo mặc định, Django cung cấp giao diện quản trị cho ứng dụng web được bảo vệ bằng xác thực. Giao diện được triển khai thông qua ứng dụng
python manage.py migrate
507 tích hợp, được bao gồm theo mặc định trong danh sách python manage.py migrate
040 của dự án [python manage.py migrate
85] và việc xác thực được xử lý bằng ứng dụng python manage.py migrate
510 tích hợp, cũng nằm trong danh sách python manage.py migrate
040 theo mặc địnhThực hiện các bước sau để kích hoạt giao diện quản trị
Tạo tài khoản siêu người dùng trong ứng dụng bằng cách mở Terminal trong Mã VS cho môi trường ảo của bạn, sau đó chạy lệnh
512, thay thếpython manage.py migrate
513 vàpython manage.py migrate
514, tất nhiên, bằng thông tin cá nhân của bạn. Khi bạn chạy lệnh, Django sẽ nhắc bạn nhập và xác nhận mật khẩu của bạnpython manage.py migrate
Hãy nhớ nhớ kết hợp tên người dùng và mật khẩu của bạn. Đây là những thông tin đăng nhập bạn sử dụng để xác thực với ứng dụng
Thêm tuyến URL sau vào cấp dự án
86 [python manage.py migrate
41 trong hướng dẫn này] để trỏ đến giao diện quản trị tích hợp# Linux sudo apt-get install python3-venv # If needed python3 -m venv .venv source .venv/bin/activate # macOS python3 -m venv .venv source .venv/bin/activate # Windows py -3 -m venv .venv .venv\scripts\activate
5python manage.py migrate
Chạy máy chủ, sau đó mở trình duyệt tới trang /quản trị viên của ứng dụng [chẳng hạn như
517 khi sử dụng máy chủ phát triển]python manage.py migrate
Một trang đăng nhập xuất hiện, lịch sự của
510. Nhập thông tin đăng nhập siêu người dùng của bạnpython manage.py migrate
Sau khi được xác thực, bạn sẽ thấy trang quản trị mặc định, qua đó bạn có thể quản lý người dùng và nhóm
Bạn có thể tùy chỉnh giao diện quản trị bao nhiêu tùy thích. Ví dụ: bạn có thể cung cấp khả năng chỉnh sửa và xóa các mục nhập trong cơ sở dữ liệu. Để biết thêm thông tin về cách thực hiện các tùy chỉnh, hãy tham khảo tài liệu trang quản trị Django
Tạo vùng chứa cho ứng dụng Django bằng tiện ích mở rộng Docker
Tiện ích mở rộng Docker giúp dễ dàng xây dựng, quản lý và triển khai các ứng dụng được chứa trong Visual Studio Code. Nếu bạn quan tâm đến việc tìm hiểu cách tạo vùng chứa Python cho ứng dụng Django được phát triển trong hướng dẫn này, hãy xem hướng dẫn Python trong vùng chứa, hướng dẫn này sẽ hướng dẫn bạn cách tạo
- Tạo một tệp
519 mô tả một vùng chứa Python đơn giảnpython manage.py migrate
- Xây dựng, chạy và xác minh chức năng của ứng dụng Django
- Gỡ lỗi ứng dụng đang chạy trong vùng chứa
Bước tiếp theo
Chúc mừng bạn đã hoàn thành hướng dẫn làm việc với Django trong Visual Studio Code này
Dự án mã đã hoàn thành từ hướng dẫn này có thể được tìm thấy trên GitHub. python-sample-vscode-django-tutorial
Trong hướng dẫn này, chúng tôi mới chỉ vạch ra bề nổi của mọi thứ mà Django có thể làm. Hãy nhớ truy cập tài liệu Django và hướng dẫn Django chính thức để biết thêm chi tiết về chế độ xem, mẫu, mô hình dữ liệu, định tuyến URL, giao diện quản trị, sử dụng các loại cơ sở dữ liệu khác, triển khai vào sản xuất, v.v.
Để dùng thử ứng dụng của bạn trên trang web sản xuất, hãy xem hướng dẫn Triển khai ứng dụng Python vào Dịch vụ ứng dụng Azure bằng Docker Container. Azure cũng cung cấp một bộ chứa tiêu chuẩn, Dịch vụ ứng dụng trên Linux, nơi bạn triển khai các ứng dụng web từ bên trong Mã VS