You are on page 1of 75

Django

• Khóa học cấp tốc Python (ERIC MATTHES)


Nội dung
• Bắt đầu với Django
• Tài khoản người dùng
• Tạo kiểu và triển khai ứng dụng
1. Bắt đầu với Django
1.1. Thiết lập dự án
1.2. Bắt đầu một ứng dụng
1.3. Tạo trang: Trang chủ
1.4. Xây dựng các trang bổ sung
2. Tài khoản người dùng
2.1. Cho phép người dùng nhập dữ liệu
2.2. Thiết lập tài khoản người dùng
2.3. Cho phép người dùng sở hữu dữ liệu của họ
3. Tạo kiểu và triển khai Ứng
dụng
3.1. Nhật ký học tập tạo kiểu
3.2. Triển khai Nhật ký học tập
3.1. Tạo kiểu Nhật ký học tập
• Ứng dụng django-bootstrap4
• Chúng ta sẽ sử dụng django-bootstrap4 để tích hợp Bootstrap vào
project của chúng ta.
• Ứng dụng này tải xuống các tệp Bootstrap cần thiết, đặt chúng ở
một vị trí thích hợp trong dự án của bạn và làm cho các chỉ thị tạo
kiểu có sẵn trong các mẫu của dự án của bạn.
• Để cài đặt django-bootstrap4, phát hành lệnh sau trong môi trường
ảo đang hoạt động:
3.1. Tạo kiểu Nhật ký học tập
(11 env) learning_log$ pip cài đặt django-bootstrap4 --
snäp--
Cài đặt thành công django-bootstrap4-O.O.7
• Ứng dụng django-bootstrap4
• Tiếp theo, chúng ta cần thêm đoạn mã sau để bao gồm
djangobootstrap4 trong ỨNG DỤNG ĐÃ CÀI ĐẶT trong
settings.py:
settings.py
Ứng dụng của tôi.
3.1. Tạo kiểu Nhật ký học tập
' learning_ nhật ký ,
' người dùng '
# Ứng dụng của bên thứ ba.
' bootstrap4 ',
# Ứng dụng django
mặc định. Django.
,

• -Snip--

• Sử dụng Bootstrap để tạo kiểu cho Learning Log


3.1. Tạo kiểu Nhật ký học tập
• Bootstrap là một bộ sưu tập lớn các công cụ tạo kiểu. Nó cũng có
một số mẫu bạn có thể áp dụng cho dự án của mình để tạo phong
cách tổng thể.
• Việc sử dụng các mẫu này dễ dàng hơn nhiều so với việc sử dụng
các công cụ tạo kiểu riêng lẻ.
• Để xem các mẫu mà Bootstrap cung cấp, hãy đi tới
https://getbootstrap.com/, nhấp vào Ví dụ và tìm phần Navbars.
• Chúng tôi sẽ sử dụng mẫu tĩnh Navbar, cung cấp thanh điều hướng
trên cùng đơn giản và vùng chứa nội dung của trang.
3.1. Tạo kiểu Nhật ký học tập
• Sửa đổi base.html- Defining các tiêu đề HTML
• Thay đổi đầu tiên chúng ta sẽ thực hiện đối với base.html xác định
các tiêu đề HTML trong tệp, vì vậy bất cứ khi nào trang Learning
Log được mở, thanh tiêu đề trình duyệt sẽ hiển thị tên trang web.
• Chúng tôi cũng sẽ thêm một số yêu cầu để sử dụng Bootstrap trong
templat es của chúng tôi.
• Xóa mọi thứ trong base.html và thay thế nó bằng mã sau:
• Sửa đổi cơ sở.html- Xác định các tiêu đề HTML
3.1. Tạo kiểu Nhật ký học tập

cơ sở.html O {% tải bootstrap4 %}

< !doctype html)

Các (html
(meta
(meta name-"viewport" content-"width-device-width, initial-scale-I,

O <tit1e>Nhật ký học tập</title>

O { % bootstrap_css %}
{X bootstrap_javascript jquery= ' đầy đủ' %}
3.1. Tạo kiểu Nhật ký học tập

• Sửa đổi cơ sở.html- Xác định thanh điều hướng


• Đây là phần đầu tiên của thanh điều hướng:

Căn cứ.html- -Cắt--


(/đầu>

• O (NAV Navbar-expand-MD Navbar-Light BG-Light MB-4

• ca classz"navbar-brand" url Học tập


3.1. Tạo kiểu Nhật ký học tập

hoặc
• Sửa đổi cơ sở.html- Xác định thanh điều hướng
• Đây là phần tiếp theo của mã xác định thanh điều hướng:

Căn cứ.html- -Cắt--

<
< mà
y
< nhịp
3.1. Tạo kiểu Nhật ký học tập
• (div
hoặc
Chủ đề</a></li>

• Sửa đổi cơ sở.html- Xác định thanh điều hướng


• Đây là phần tiếp theo của thanh điều hướng:
3.1. Tạo kiểu Nhật ký học tập

căn cứ.
{X endif X}

• < /div>
3.1. Tạo kiểu Nhật ký học tập
• Sửa đổi cơ sở.html- Xác định phần chính của trang
• Phần còn lại của cơ sở.html chứa phần chính của trang:

căn cứ. .html --snip-


< /nav>

• <Main O(div MB-2 border-bottom")


{X block page_header endblock page_header X}
< /div>
o <div>
{X chặn nội dung %}{% nội dung
endblock X} </div>
3.1. Tạo kiểu Nhật ký học tập
< / cơ thể>

• Tạo kiểu cho trang chủ bằng Jumbotron


• Để cập nhật trang chủ, chúng tôi sẽ sử dụng một phần tử Bootstrap
được gọi là jumbotron, đây là một hộp lớn nổi bật so với phần còn
lại của trang và có thể chứa bất cứ thứ gì bạnmuốn.
• Đây là tệp chỉ mục .html đã sửa đổi:

index.html {Z mở rộng "learning_logs/base.html" Z}


3.1. Tạo kiểu Nhật ký học tập
• {X khối page_header Z}
O (div o học tập
của bạn .
O Nhật ký học tập của riêng bạn và giữ một
danh sách các chủ đề bạn đang học. Bất cứ khi nào bạn học được
điều gì đó mới về một chủ đề, hãy tạo một mục tóm tắt những gì
bạn có

O <a classz"btn btn-lg btn-primary " url 'users:register' X}"


role="button">Register &raquo;</a>
</div)

• Tạo kiểu cho trang đăng nhập


3.1. Tạo kiểu Nhật ký học tập
• Chúng tôi đã tinh chỉnh giao diện tổng thể của trang đăng nhập
nhưng chưa phải là biểu mẫu đăng nhập.
• Hãy làm cho biểu mẫu trông nhất quán với phần còn lại của trang
bằng cách sửa đổi tệp .html đăng nhập:
• Tạo kiểu cho trang đăng nhập

Đăng nhập. html {X mở rộng "learning_logs/base.


html" X} o {X tải bootstrap4 X}
O {X khối page_header
<h2>Đăng nhập vào tài khoản của bạn .</h2>
{% endblock page_header
3.1. Tạo kiểu Nhật ký học tập
{X chặn nội dung X}

O (form '
action="{% url users: login' X}"
{Z csrf_token X} O

{ X bootstrap_form dạng
X} nút o {X
<Tên nút:" gửi" btn-chính">Đăng nhập</nút> { X nút
kết thúc X}

(nhập loại-"ẩn" tên-"next n


value- '
t
{% url

'learning_logs: index' X}"


{Z endblock content X)

• Tạo kiểu cho trang đăng nhập


3.1. Tạo kiểu Nhật ký học tập

Đăng nhập vào tài khoản của bạn.

• Tạo kiểu cho trang chủ đề

topics.html {% mở rộng "learning_logs/base.html" X}


O khối page_header X}
3.1. Tạo kiểu Nhật ký học tập
{X endblock page header X}
{Z chặn nội dung Yo}

tr Chủ đềX}
on
Địa chỉ 'học_Nhật ký:Chủ đề'topic.id chủ đề
g X}
{X trống Các chủ đề đã được thêm vào

{X endfor X}

Hoặc

• Tạo kiểu cho trang chủ đề


3.1. Tạo kiểu Nhật ký học tập
• Chúng tôi không cần thẻ {% load bootstrap4 %}, vì chúng tôi
không sử dụng bất kỳ thẻ mẫu bootstrap4 tùy chỉnh nào trong tệp
này.
• Chúng tôi di chuyển tiêu đề Chủ đề vào khối page_header và tạo
kiểu tiêu đề thay vì sử dụng thẻ đoạn đơn giản (2).
• Chúng tôi tạo kiểu cho mỗi chủ đề dưới dạng phần tử <h3> để làm
cho chúng lớn hơn một chút trên trang (2) và làm tương tự cho liên
kết để thêm chủ đề mới (3).
• Tạo kiểu cho các mục nhập trên trang chủ đề
3.1. Tạo kiểu Nhật ký học tập
• Trang chủ đề có nhiều nội dung hơn hầu hết các trang, vì vậy nó
cần nhiều công việc hơn một chút.
• Chúng tôi sẽ sử dụng thành phần thẻ của Bootstrap để làm cho mỗi
mục nhập nổi bật.
• Thẻ là một div với một tập hợp các kiểu linh hoạt, được xác định
trước, hoàn hảo để hiển thị các mục nhập của chủ đề:
• Tạo kiểu cho các mục nhập trên trang chủ đề
topic.html (X mở rộng learning_iogs/base.htrnl' X}
3.1. Tạo kiểu Nhật ký học tập
O {X
Chủ đề

block Z}
page_header

{Z endblock page_header X}
(X chặn nội dung X)

chủ đề. id mới

nhập • entry.id X}
3.1. Tạo kiểu Nhật ký học tập
/div) rỗng X) cp>Không có mục nào cho chủ đề này

endfoy X)

• Tạo kiểu cho các mục nhập trên trang chủ đề


3.1. Tạo kiểu Nhật ký học tập

19.201902:06
3.2. Triển khai Nhật ký học tập
• Tạo tài khoản Heroku
• Để tạo tài khoản, hãy đi tới https://heroku.com/ và nhấp vào một
trong các liên kết đăng ký.
• Tạo tài khoản miễn phí và Heroku có một cấp miễn phí cho phép
bạn kiểm tra các dự án của mình trong triển khai trực tiếp đểtriển
khai chúng đúng cách.
• Cài đặt Heroku CLI
3.2. Triển khai Nhật ký học tập
• Để triển khai và quản lý một dự án trên các máy chủ của Heroku,
bạn sẽ cần các công cụ có sẵn trong Giao diện dòng lệnh Heroku
(CLI).
• Để cài đặt phiên bản mới nhất của Heroku CLI, hãy truy cập htt s:
devcenter.heroku.com bài viết heroku-cli và làm theo hướng dẫn
cho hệ điều hành của bạn.
• Các hướng dẫn sẽ bao gồm lệnh đầu cuối một dòng hoặc trình cài
đặt mà bạn có thể tải xuống và chạy.
• Cài đặt các gói cần thiết
3.2. Triển khai Nhật ký học tập
• Bạn cũng sẽ cần cài đặt ba gói giúp phục vụ các dự án Django trên
máy chủ trực tiếp.
• Trong môi trường ảo đang hoạt động, hãy đưa ra các lệnh sau:

(11 env) Học tập_log$ pip cài đặt psycopg2--2 7 *


(11 env) lkiếm tiền_log$ pip cài đặt django-heroku
(ll_env) Học tập_log$ pip cài đặt gunicorn

• Tạo yêu cầu.txt Tệp


3.2. Triển khai Nhật ký học tập
• Heroku cần biết dự án của chúng ta phụ thuộc vào gói nào, vì vậy
chúng ta sẽ sử dụng pip để tạo một tệp liệt kê chúng.
• Một lần nữa, từ một môi trường ảo đang hoạt động, hãy đưa ra lệnh
sau:

• Tạo yêu cầu.txt Tệp


• Lệnh freeze yêu cầu pip viết tên của tất cả các gói hiện được cài đặt
trong dự án vào các yêu cầu tệp.txt.
3.2. Triển khai Nhật ký học tập
• Mở tệp này để xem các gói và số phiên bản được cài đặt trong dự
án của bạn

yêu cầu.txt

• Tạo yêu cầu.txt Tệp


3.2. Triển khai Nhật ký học tập
• Khi chúng ta deploy Learning Log, Heroku sẽ cài đặt tất cả các
package được liệt kê trong requirements.txt, tạo ra một môi trường
với các package giống như chúng ta đanghát locally.
• Vì lý do này, chúng tôi có thể tự tin rằng dự án được triển khai sẽ
hoạt động giống như trên hệ thống cục bộ của chúng tôi. Đây là
một lợi thế rất lớn khi bạn bắt đầu xây dựng và duy trì các dự án
khác nhau trên hệ thống của mình.
• Chỉ định thời gian chạy Python
3.2. Triển khai Nhật ký học tập
• Trừ khi bạn chỉ định phiênbản Python, Heroku sẽ sử dụng phiên
bản Python mặc định hiện tại của nó.
• Hãy đảm bảo rằng Heroku sử dụng cùng một phiên bản Python mà
chúng ta đang sử dụng.
• Trong môi trường ảo đang hoạt động, hãy đưa ra lệnh:

(11 env) learning_log$ python --version


Python 3.7.2
3.2. Triển khai Nhật ký học tập
• Chỉ định thời gian chạy Python
• Trong ví dụ này, tôi đang chạy Python 3.7.2.
• Tạo một tệp mới có tên là runtime.txt trong cùng thư mục với
manage.py và nhập thông tin sau:

Thời gian chạy.txt Python-3.7.2

• Sửa đổi settings.pyfor Heroku


3.2. Triển khai Nhật ký học tập
• Bây giờ chúng ta cần thêm một phần ở cuối settings.py để xác định
một số cài đặt cụ thể cho môi trường Heroku:

settings.py- -Cắt tỉa--


# Cài đặt của tôi
URL ĐĂNG NHẬP = 'người dùng: đăng nhập'
# Cài đặt Heroku. Nhập
django_heroku django_heroku. Cài
đặt (Locals())
3.2. Triển khai Nhật ký học tập
• Tạo Procfile để bắt đầu quy trình
• Một Procfile cho Heroku biết quy trình nào sẽ bắt đầu để phục vụ
đúng dự án.
• Lưu tệp một dòng này dưới dạng Procfile, với chữ P viết hoa và
không có phần mở rộng tệp, trong cùng thư mục với manage.py.
• Đây là dòng đies trong Procfile:

Procfile web: gunicorn learning_log.wsgi --log-file -


3.2. Triển khai Nhật ký học tập
3.2. Triển khai Nhật ký học tập — Sử dụng
Git
• Cài đặt Git
• Git có thể đã được cài đặt trên hệ thống của bạn. Để tìm hiểu xem
Git đã được cài đặt chưa, hãy mở một cửa sổ terminal mới và đưa
ra lệnh git --version:

(ll_env) learning_log $ git --


version git version 2.17.0
3.2. Triển khai Nhật ký học tập — Sử dụng
Git
• Cấu hình Git
• Git theo dõi ai thực hiện thay đổi cho dự án, ngay cả khi chỉ có một
người đang làm việc trong dự án.
• Để làm điều này, Git cần biết tên người dùng và email của bạn.
Bạn phải cung cấp tên người dùng của mình, nhưng bạn có thể tạo
email cho các dự án thực hành của mình:

(11 env) learning_log$ git config - -người dùng toàn cầu. Tên "ehmatthes"
3.2. Triển khai Nhật ký học tập — Sử dụng
Git
(ll_env) learning_log$ git config --user.email toàn cầu "eric@example.com"

• Bỏ qua các tập tin


• Chúng tôi không cần Git để theo dõi mọi tệp trong dự án, vì vậy
chúng tôi sẽ bảo nó bỏ qua một số tệp.
• Tạo tệp có tên . Gitignore trong thư mục chứa manage.py.
• Khôngphải băng mà tên tệp này bắt đầu bằng dấu chấm và không
có phần mở rộng tệp. Đây là mã đi vào . Gitignore:
3.2. Triển khai Nhật ký học tập — Sử dụng
Git
. Gitignore ll_env/
—pycache /
*. sq1ite3

• Hiển thị các tệp ẩn


• Hầu hết các hệ điều hành ẩn các tệp và thư mục bắt đầu bằng dấu
chấm, chẳng hạn như . Gitignore.
3.2. Triển khai Nhật ký học tập — Sử dụng
Git
• Khi bạn mở trình duyệt tệp hoặc cố gắng mở tệp từ một ứng dụng
như Sublime Text, bạn sẽ không thấy các loại tệp này theo mặc
định.
• Nhưng là một lập trình viên, bạn sẽ cần phải nhìn thấy chúng. Dưới
đây là cách xem các tệp ẩn, tùy thuộc vào hệ điều hành của bạn:
• Hiển thị các tệp ẩn
3.2. Triển khai Nhật ký học tập — Sử dụng
Git
• Trên Windows, mở Windows Explorer, sau đó mở một thư mục
như Màn hình nền. Nhấp vào tab Xem và đảm bảo phần mở rộng
Tên tệp và Mục ẩn được chọn.
• Trên macOS, bạn có thể nhấn -. (chấm) trong bất kỳ cửa sổ file
browser nào để xem các tệp và thư mục ẩn.
• Trên các hệ thống Linux như Ubuntu, bạn có thể nhấn ctrl-H trong
bất kỳ trình duyệt tệp nào để hiển thị các tệp và thư mục ẩn. Để
thực hiện cài đặt này vĩnh viễn, hãy mở trình duyệt tệp như
3.2. Triển khai Nhật ký học tập — Sử dụng
Git
Nautilus và nhấp vào tab tùy chọn (đượccated bởi ba dòng). Chọn
hộp kiểm Hiển thị tệp ẩn.
• Cam kết thực hiện dự án
• Chúng ta cần khởi tạo một Git repository cho Learning Log, thêm
tất cả các file cần thiết vào repository và commit trạng thái ban đầu
của
dự án. • Đây là cách để
làm điều đó: O (ll_env)learning_log$ git init
3.2. Triển khai Nhật ký học tập — Sử dụng
Git
Khởi tạo kho lưu trữ Git trống trong
.
đến heroku 45 tập tin thay đổi, 712 chèn (+) tạo mode 100644 . gitignore tạo
/ / /learning_log/
/home ehmatthes pcc chế độ 100644 Procfile
--snåp-tạo chế độ 100644 người dùng /
.git/ O (ll_env)learning_log$ git add . lượt xem.py trạng
O (11 env)learning_log$ git commit -am "Sẵn thái git Trên chủ chi nhánh không có gì để
cam kết, cây làm việc sạch sẽ
sàng triển khai đến heroku. " [Thạc sĩ (cam

gốc) 79fef72] Sẵn sàng triển khai


kết

• Cam kết thực hiện dự án


• Tại (1) ta phát hành lệnh git init để khởi tạo một empty repository trong
thư mục chứa Learning Log.
3.2. Triển khai Nhật ký học tập — Sử dụng
Git
• Tại (2) chúng ta sử dụng lệnh git add., lệnh này thêm tất cả các tệp
không bị bỏ qua vào kho lưu trữ. (Đừng quên dấu chấm.)
• Tại (3) chúng ta đưa ra lệnh git commit -am commit message: cờ -a yêu
cầu Git bao gồm tất cả các tệp đã thay đổi trong commit này và cờ -m
yêu cầu Git ghi lại một thông báo nhật ký.
• Phát hành lệnh trạng thái git (4) chỉ ra rằng chúng ta đang ở trên nhánh
chính và cây làm việc của chúng ta sạch sẽ. Đây là trạng thái bạn sẽ
muốn thấy bất cứ khi nào bạn đẩy dự án của mình lên Heroku.
3.2. Triển khai Nhật ký học tập
• Đẩy đến Heroku
• Cuối cùng chúng tôi đã sẵn sàng để đẩy dự án lên Heroku. Trong môi
trường ảo đang hoạt động, hãy đưa ra các lệnh sau:

O (ll_env)learning_log$ heroku login heroku : Press bất kỳ phím


nào để mở trình duyệt để đăng nhập hoặc q để thoát:
Đăng nhập... Thực hiện
Đăng nhập dưới dạng
eric@example
.com heroku
tạo
Tạo ứng dụng... xong, bí mật-vùng đất thấp-
82594 https://secret-10w1ands-82594.herokuapp.com/
tôi https://git.heroku.com/secret-10w1ands-82594.git
git đẩy heroku bậc thầy --snip-remote.• Ra mắt...

remote: Phát hành v5 o remote: https://secret-10w1ands-


82594.herokuapp.com/ triển khai to Heroku remote: Xác minh xong.
3.2. Triển khai Nhật ký học tập
Đến https://git.heroku.corn/secret-lowlands-82594.git
[chi nhánh mới] thạc sĩ -Y thạc sĩ

• Đẩy đến Heroku


• Khi bạn đã phát hành các lệnh này, dự án được triển khai nhưng
không được cấu hình đầy đủ. Để kiểm tra xem quy trình máy chủs
khởi động chính xác chưa, hãy sử dụng lệnh heroku ps:

(ll_env) Học tập_log$ heroku PS


O Hạn ngạch giờ dyno miễn phí còn lại trong tháng này: 450h 44 phút
(81%) Sử dụng dyno miễn phí cho ứng dụng này: Oh om (0%)
Để biết thêm thông tin về chế độ ngủ dyno và cách nâng cấp, hãy xem:
https://devcenter.heroku.com/articles/dyno-sleeping
3.2. Triển khai Nhật ký học tập
O web (Miễn phí): gunicorn learning_log.wsgi --log-file
web. 1: lên 2019/02/19 23:40:12 -0900 (N 10phút
trước) (ll_env)learning_log$

• Đẩy đến Heroku


• Bây giờ chúng ta có thể mở ứng dụng trong trình duyệt bằng lệnh
heroku open:

(ll_env) Học tập_log$ heroku mở


(ll_env) Học tập_log$
3.2. Triển khai Nhật ký học tập
• Lệnh này giúp bạn không phải mở trình duyệt và nhập URL mà
Heroku đã chỉ cho bạn, nhưng đó là một cách khác để mở trang web.
• Bạn sẽ thấy trang chủ của Nhật ký học tập, được tạo kiểu chính xác.
• Tuy nhiên, bạn chưa thể sử dụng ứng dụng vì chúng tôi chưa thiết lập
cơ sở dữ liệu.
• Thiết lập cơ sở dữ liệu trên Heroku
• Chúng ta cần chạy migrate once để thiết lập live database và áp dụng
tất cả các migration mà chúng ta đã tạo ra trong quá trình phát triển.
• Bạn có thể chạy các lệnh Django và Python trên một dự án Heroku
bằng lệnh heroku run.
3.2. Triển khai Nhật ký học tập
• Dưới đây là cách chạy migrate trên triển khai Heroku:
O Chạy 'trăn manage.py di cư' trên vùng đất thấp bí mật-82594... lên, chạy. 3060 --
cắt--
O Chạy di chuyển:
--Snip--
Áp dụng learning_logs 0001_initial... OK
Áp dụng learning_logs 0002_entry... OK
Áp dụng learning_logs 0003_topic_owner... OK
Áp dụng các phiên. 0001_initial... OK
• Thiết lập cơ sở dữ liệu trên Heroku
• Bây giờ khi bạn truy cập ứng dụng đã triển khai của mình, bạn nênsử
dụng nó giống như bạn đã làm trên hệ thống cục bộ của mình. Nhưng
3.2. Triển khai Nhật ký học tập
bạn sẽ không thấy bất kỳ dữ liệu nào bạn đã nhập khi triển khai cục
bộ, bao gồm cả tài khoản superuser của bạn, vì chúng tôi không sao
chép dữ liệu vào máy chủ trực tiếp.
• Đây là thực tế bình thường: bạn thường không sao chép dữ liệu
cụcbộ y để triển khai trực tiếp vì dữ liệu cục bộ thường là dữ liệu
thử nghiệm .
• Bạn có thể chia sẻ liên kết Heroku của mình để cho phép bất kỳ ai sử
dụng phiên bản Nhật ký học tập của bạn.
• Tinh chỉnh triển khai Heroku - Tạo siêu người dùng trên Heroku
3.2. Triển khai Nhật ký học tập
• Bạn đã thấy rằng chúng ta có thể run lệnh một lần bằng cách sử dụng
lệnh chạy heroku. Nhưng bạn cũng có thể chạy các lệnh bằng cách
mở phiên đầu cuối Bash trong khi kết nối với máy chủ Heroku bằng
lệnh heroku run bash.
• Bash là ngôn ngữ chạy trong nhiều thiết bị đầu cuối Linux. Chúng tôi
sẽ sử dụng phiên thiết bị đầu cuối Bash để tạo siêu người dùng để
chúng tôi có thể truy cập trang web quản trị trên ứng dụng trực tiếp.
• Tinh chỉnh triển khai Heroku - Tạo siêu người dùng trên Heroku
Chạy 'Ầm ầm' vùng thấp bí mật-82594...lên chạy.9858
• N $ là learning_log learning_logs quản lý. py Procfile yêu cầu.txt thời gian chạy.txt người dùng staticfiles
3.2. Triển khai Nhật ký học tập
O $ python quản lý. PY createsuperuser
Tên người dùng (để trống để sử dụng 'u47318'): Il_admin
Địa chỉ email:
Mật khẩu:
Mật khẩu (một lần nữa):
Superuser đã tạo thành công.
O $ thoát ra

• Tinh chỉnh triển khai Heroku- Tạo URL thân thiện với người dùng
trên Heroku • Nhiều khả năng, bạn sẽ muốn URL của mình thân thiện
và đáng nhớ hơn https://secret-lowlands-82594.herokuapp.com/.
• Bạn có thể đổi tên ứng dụng bằng một lệnh duy nhất:
3.2. Triển khai Nhật ký học tập

(11 env) learning_log$ heroku apps: đổi tên learning-


log Đổi tên secret-lowlands-82594 thành learning-log-2e... xong
https://learning-log.herokuapp.com/ tôi https://git.heroku.com/learning-log.git
Git từ xa heroku cập nhật
Đừng quên cập nhật điều khiển từ xa git cho tất cả các thanh toán cục bộ khác của ứng dụng.

• Bảo mật dự án trực tiếp


• Một vấn đề bảo mật rõ ràng tồn tại trong cách dự án của chúng tôi hiện
đang được triển khai: cài đặt DEBUG = True trong settings.py, cung cấp
thông báo gỡ lỗi khi xảy ra lỗi.
• Các trang lỗi của Django cung cấp cho bạn thông tin gỡ lỗi quan trọng
khi bạn đang phát triển một dự án; Tuy nhiên, chúng cung cấp quá nhiều
3.2. Triển khai Nhật ký học tập
thông tin cho những kẻ tấn công nếu bạn để chúng saymê trên một máy
chủ trực tiếp.
• Chúng tôi sẽ kiểm soát xem thông tin gỡ lỗi có được hiển thị trên trang
web đang hoạt động hay không bằng cách đặt biến môi trường. Biến
môi trường là các giá trị được đặt trong một môi trường cụ thể. Đây là
một trong những cách thông tin nhạy cảm được lưu trữ trên server, giữ
nó tách biệt với phần còn lại của mã dự án.
• Bảo mật dự án trực tiếp
• Hãy sửa đổi settings.py để nó tìm kiếm một biến môi trường khi dự
án đang chạy trên Heroku:
3.2. Triển khai Nhật ký học tập
settingspy-- snip-# Cài đặt Heroku.
Nhập Django Heroku
django_heroku. Cài đặt (người dân
địa phương())

'
if os.environ.get( DEBUG') = 'TRUE':
DEBUG True elif
'
os.environ.get( DEBUG' ) ' FALSE':
DEBUG = False

• Cam kết và thúc đẩy thay đổi


3.2. Triển khai Nhật ký học tập
• Bây giờ chúng ta cần cam kết các thay đổi được thực hiện để
settings.py vào kho lưu trữ Git, sau đó đẩy các thay đổi sang Heroku.
• Dưới đây là phiên đầu cuối hiển thị quá trình này:

O (11 env)learning_log$ git comit -am "Đặt DEBUG dựa trên các biến môi trường. "
[Sư phụ 3427244] Đặt DEBUG dựa trên các biến môi trường.
1 tệp đã thay đổi, 4 lần chèn (+)
O (trạng thái 11 git
Trên chi nhánh chủ không có gì để cam
kết, cây làm việc sạch (ll_env) học

tập_log$
3.2. Triển khai Nhật ký học tập
• Cam kết và thúc đẩy thay đổi
• Bây giờ chúng ta hãy push kho lưu trữ cập nhật cho Heroku:

(ll_env) learning_log$ git push heroku master


remote: Xây dựng nguồn:
Từ xa: Từ xa: -> đã phát hiện ứng
dụng Python
xa: - Yêu cầu cài đặt với pip
--Snip--
xa: - Tung ra...

xa: Phát hành v6

xa: https://learning-log.herokuapp.com/ được triển khai đến


Heroku
xa:
3.2. Triển khai Nhật ký học tập
từ xa: Xác minh triển khai... Thực hiện.
Đến https://git.heroku.com/learning-log.git
144F020. .d5075A1 Thạc sĩ

• Thiết lập biến môi trường trên Heroku


• Bây giờ chúng ta có thể thiết lập giá trị chúng ta muốn cho DEBUG
trong settings.py thông qua Heroku.
• Lệnh heroku config:set đặt một biến môi trường cho chúng ta:

(Il env) learning_log$ heroku config: set DEBUG=' FALSE'


Cài đặt DEBUG và khởi động lại learning-log... Xong, v7
GỠ LỖI: FALSE
3.2. Triển khai Nhật ký học tập
(ll_env) learning_log$
3.2. Triển khai Learvà Nhật trình - Tạo tùy chỉnh Trang lỗi

• Tạo mẫu tùy chỉnh


• Trong thư mục learning_log ngoài cùng , hãy tạo một thư mục mới
có tên là templates.
• Sau đó tạo một tệp mới có tên 404.html; Đường dẫn đến tệp này phải
là learning_/og/temp/ates/404.htm/. Đây là mã cho tệp này:

404.html {% mở rộng "learning_logs/base. html" Z}


{% chặn tiêu đề trang %}
<h2>Mặt hàng bạn yêu cầu không có sẵn. (404)< /h2>
{% endblock page_header %}
3.2. Triển khai Learvà Nhật trình - Tạo tùy chỉnh Trang lỗi

• Tạo mẫu tùy chỉnh


• Tạo một tệp khác có tên 500.html bằng mã sau:

500.html {X mở rộng "learning_logs/base. html" X}

• Tạo mẫu tùy chỉnh


• Các tệp mới này yêu cầu một chút thay đổi đối với settings.py.
3.2. Triển khai Learvà Nhật trình - Tạo tùy chỉnh Trang lỗi

settings.py --snip-
TEMPLATES -

'PHỤ TRỢ': django . mẫu. phụ trợ . Django. DjangoTemp1ates ,

'DIRS': [os. đường dẫn. ' mẫu'


'APP DIRS': Đúng,
--Snip--

• Xem cục bộ các trang lỗi


3.2. Triển khai Learvà Nhật trình - Tạo tùy chỉnh Trang lỗi

• Nếu bạn muốn xem các trang lỗi trông như thế nào trên hệ thống của
mình trước khi đẩy chúng vào Heroku, trước tiên bạn cần đặtDebug =
False trên cài đặt cục bộ của mình để chặn các trang gỡ lỗi Django
mặc định.
• Để làm như vậy, hãy thực hiện thay đổi sau đối với settings.py (đảm
bảo bạn đang làm việc trong phần settings.py áp dụng cho môi trường
cục bộ, không phải phần áp dụng cho Heroku):

Cài đặt- -Cắt--


# CẢNH BÁO BẢO MẬT: không chạy với gỡ lỗi được bật trong sản xuất!
DEBUG - False
3.2. Triển khai Learvà Nhật trình - Tạo tùy chỉnh Trang lỗi
--Snip--

• Thúc đẩy những thay đổi đối với Heroku


• Bây giờ chúng ta cần cam kết các thay đổi trang lỗi mà chúng ta vừa
thực hiện và đẩy chúng trực tiếp lên Heroku:

O (ll_env)learning_log$ git add .


O (ll_env)learning_log$ git commit -am "Đã thêm các trang lỗi 404 và 500 tùy chỉnh. " 3

tệp đã thay đổi, 15 chèn (+), 10 xóa (-) tạo chế độ 100644 mẫu/404.htm1 tạo chế độ
100644 mẫu/500.htm1
O (ll_env)learning_log$ git push heroku

master --snip-remote: Verifying


deploy done.
3.2. Triển khai Learvà Nhật trình - Tạo tùy chỉnh Trang lỗi
Để https://git.heroku.com/learning-log.git
d5075a1. .4bd3b1c thạc sĩ
(11 env) Học tập_log$

• Sử dụng phương thức get_object_or_404()


• Tại thời điểm này, nếu người dùng tìm kiếm thủ côngmột chủ đề hoặc
mục nhập không tồn tại, họ sẽ gặp lỗi máy chủ 500.
• Django cố gắng hiển thị trang không tồn tại, nhưng nó không có đủ
thông tin để làm như vậy và kết quả là lỗi 500.
3.2. Triển khai Learvà Nhật trình - Tạo tùy chỉnh Trang lỗi

• Tình huống này được xử lý chính xác hơn dưới dạng 404 error và chúng
ta có thể thực hiện hành vi này bằng cách sử dụng hàm phím tắt Django
get_object_or_404().
• Hàm này cố gắng lấy đối tượng được yêu cầu từ cơ sở dữ liệu, nhưng
nếu đối tượng đó không tồn tại, nó sẽ tạo ra ngoại lệ 404. Chúng ta sẽ
import hàm này vào views.py và sử dụng nó thay cho get():
• Sử dụng phương thức get_object_or_404()
3.2. Triển khai Learvà Nhật trình - Tạo tùy chỉnh Trang lỗi
views.py từ Django. phím tắt Nhập kết xuất, chuyển hướng get_object

or_404 từ Django. contrib.auth.decorators nhập nhập yêu cầu


--snip-@login yêu cầu def topic(request, topic_id):
"Hiển thị một chủ đề duy nhất và tất cả các mục của nó.

topic = get_object hoặc 404 (Chủ đề, id = id chủ


đề) đảm bảo chủ đề thuộc về người dùng hiện
tại.

• -Snip--
3.2. Triển khai Nhật ký học tập
• Phát triển liên tục
• Bạn có thể muốn phát triển hơn nữa Learning Log sau lần đẩy đầu tiên lên máy chủ trực tiếp hoặc
phát triển các dự án của riêng bạn để triển khai. Có một quy trình khá nhất quán để cập nhật
các dự án.
• Đầu tiên, bạn sẽ thực hiện bất kỳ thay đổi nào cần thiết cho dự án địa phương của mình. Nếu
thay đổi của bạn dẫn đến bất kỳ tệp mới nào, hãy thêm các tệp đó vào kho lưu trữ Git bằng
lệnh git add . (hãy chắc chắn bao gồm dấu chấm ở cuối lệnh). Bất kỳ thay đổi nào yêu cầu
di chuyển cơ sở dữ liệu sẽ cần lệnh này, vì mỗi lần di chuyển sẽ tạo ra một tệp di chuyển
mới.
3.2. Triển khai Nhật ký học tập
• Thứ hai, commit các thay đổi cho repository của bạn bằng cách sử dụng git commit—am
"commit message". N đẩy các thay đổi của bạn sang Heroku bằng cách sử dụng lệnh git push
heroku master. Nếu bạn đã di chuyển cơ sở dữ liệu cục bộ, bạn cũng sẽ cần di chuyển cơ sở
dữ liệu trực tiếp. Bạn có thể sử dụng lệnh một lần heroku run python manage.py
di chuyển hoặc mở một phiên te rminal từ xa với heroku run bash và chạy lệnh
python manage.py di chuyển.
• Sau đó, hãy truy cập dự án trực tiếp của bạn và đảm bảo những thay đổi bạn mong đợi sẽ
thấy đã có hiệu lực.
• Cài đặt KHÓA BÍ MẬT
3.2. Triển khai Nhật ký học tập
• Django sử dụng giá trị của cài đặt SECRET KEY trong cài đặts.py để
triển khai một số giao thức bảo mật. Trong dự án này, chúng tôi đã
cam kết tệp cài đặt của chúng tôi vào kho lưu trữ với cài đặt KHÓA
BÍ MẬT đi kèm.
• Điều này là tốt cho một dự án thực hành, nhưng cài đặt KHÓA BÍ
MẬT nên được xử lý cẩn thận hơn chomột địa điểm sản xuất.
• Nếu bạn xây dựng một dự án đang được sử dụng có ý nghĩa, hãy đảm
bảo bạn nghiên cứu cách xử lý cài đặt KHÓA BÍ MẬT của mình an
toàn hơn.
3.2. Triển khai Nhật ký học tập
• Xóa một dự án trên Heroku
• Đăng nhập vào trang web Heroku (https://heroku.comn; bạn sẽ được
chuyển hướng đến một trang hiển thị danh sách các dự án của bạn.
Nhấp vào dự án bạn muốn xóa.
• Bạn sẽ thấy một trang mới với thông tin về dự án. Nhấp vào liên kết
Cài đặt và cuộn xuống cho đến khi bạn thấy liên kết để xóa dự án.
• Hành động này không thể đảo ngược, vì vậy Heroku sẽ yêu cầu bạn
xác nhận yêu cầu xóa bằng cách nhập thủ công tên của dự án.
• Xóa một dự án trên Heroku
3.2. Triển khai Nhật ký học tập
• Nếu bạn thích làm việc từ một thiết bị đầu cuối, bạn cũng có thể xóa
một dự án bằng cách ban hành lệnh diệt:

(ll_env) Học tập_log$ Ứng dụng heroku: Phá hủy --Tên ứng dụng

• Ở đây, appname là tên dự án của bạn, giống như secret-lowlands-


82594 hoặc learning-log nếu bạn đã đổi tên dự án.
• Bạn sẽ được nhắc nhập lại tên dự án để xác địnhviệc xóa.

You might also like