Cải thiện dự án Django của bạn với những thực tiễn tốt nhất này

Django là một khung công tác dựa trên Python mạnh mẽ, mã nguồn mở để xây dựng các ứng dụng web. Mức độ phổ biến của nó đã tăng lên trong vài năm qua, và nó đã trưởng thành và được sử dụng rộng rãi với một cộng đồng lớn đằng sau nó.

Trong số các khung dựa trên Python khác để tạo các ứng dụng web (như Flask và Kim tự tháp), Django cho đến nay là phổ biến nhất. Nó hỗ trợ cả Python phiên bản 2.7 và Python 3.6. Nhưng tại thời điểm của bài viết này, Python 2.7 vẫn là phiên bản dễ tiếp cận hơn về mặt cộng đồng, các gói của bên thứ ba và tài liệu trực tuyến. Django an toàn khi được sử dụng đúng cách và cung cấp kích thước linh hoạt cao. Đây là cách để phát triển khi phát triển các ứng dụng phía máy chủ bằng Python.

Google Xu hướng của 3 khung phát triển web Python phổ biến nhất

Là một nhà phát triển Python và Django có kinh nghiệm, tôi sẽ chia sẻ với bạn một số thực tiễn tốt nhất cho thiết lập Django mà tôi đã học hỏi và thu thập trong nhiều năm qua. Cho dù bạn có một vài dự án Django trong vành đai của mình, hoặc bạn sắp bắt đầu dự án đầu tiên của mình từ đầu, các thực tiễn tốt nhất được mô tả ở đây có thể giúp bạn tạo ra các ứng dụng tốt hơn.

Tôi đã viết bài viết này từ một tư duy rất thực tế để bạn có thể thêm một số công cụ vào hộp công cụ phát triển của mình ngay lập tức. Bạn thậm chí có thể tạo một bản tóm tắt Django tùy chỉnh nâng cao cho các dự án tiếp theo của bạn.

Với mục đích của bài viết này, tôi giả sử bạn sử dụng máy Linux Ubuntu. Trong suốt bài viết, một số dòng mã bắt đầu bằng dấu $. Chúng được sử dụng để nhấn mạnh rằng dòng này nên được chèn vào thiết bị đầu cuối. Đảm bảo sao chép dòng mà không có dấu $.

Môi trường ảo

Trong khi phát triển các ứng dụng dựa trên Python, sử dụng các gói của bên thứ ba là một việc đang diễn ra. Các gói này được cập nhật thường xuyên, vì vậy giữ cho chúng có tổ chức là điều cần thiết. Khi phát triển ngày càng nhiều dự án trên cùng một máy cục bộ, nó rất khó khăn để theo dõi phiên bản hiện tại của mỗi gói. Nó không thể sử dụng các phiên bản khác nhau của cùng một gói cho các dự án khác nhau. Hơn nữa, cập nhật một gói trên một dự án có thể phá vỡ chức năng trên một dự án khác và ngược lại.

Đó là nơi mà môi trường ảo Python có ích. Để cài đặt môi trường ảo, hãy sử dụng:

$ apt-get cập nhật
$ apt-get cài đặt python-pip python-dev build-Essential
$ export LC_ALL = "en_US.UTF-8" # có thể cần thiết trong trường hợp bạn gặp lỗi từ dòng tiếp theo
$ pip cài đặt - nâng cấp pip
$ Pip cài đặt - nâng cấp virtualenv
$ mkdir ~ / .virtualenvs
$ pip cài đặt virtualenvwrapper
$ xuất WORKON_HOME = ~ / .virtualenvs
$ nano ~ / .bashrc

Thêm dòng này vào cuối tập tin:

. /usr/local/bin/virtualenvwrapper.sh

Sau đó thực hiện:

$. .bashrc

Sau khi cài đặt, hãy tạo một môi trường ảo mới cho dự án của bạn bằng cách nhập:

$ mkvirtualenv project_name

Trong khi bạn sử dụng ngữ cảnh trong môi trường ảo của mình, bạn sẽ nhận thấy rằng một tiền tố được thêm vào thiết bị đầu cuối, như:

(project_name) ofir @ sân chơi: ~ $

Để hủy kích hoạt (thoát) môi trường ảo và quay lại bối cảnh Python chính của máy cục bộ của bạn, hãy sử dụng:

$ hủy kích hoạt

Để kích hoạt (bắt đầu) bối cảnh môi trường ảo, hãy sử dụng:

$ workon project_name

Để liệt kê các môi trường ảo hiện có trong máy cục bộ của bạn, hãy sử dụng:

$ lsvirtualenv

Giữ các phụ thuộc dự án (gói) của bạn trong một môi trường ảo trên máy của bạn cho phép bạn giữ chúng trong một môi trường biệt lập. Bạn chỉ sử dụng chúng cho một dự án (hoặc nhiều). Khi tạo một môi trường ảo mới, bạn sẽ bắt đầu một môi trường trong lành không có gói nào được cài đặt trong đó. Sau đó, bạn có thể sử dụng, ví dụ:

(project_name) $ pip cài đặt Django

để cài đặt Django trong môi trường ảo của bạn, hoặc:

(project_name) $ pip cài đặt Django == 1.11

để cài đặt phiên bản 1.11 của Django chỉ có thể truy cập từ trong môi trường.

Cả trình thông dịch Python chính của bạn lẫn các môi trường ảo khác trên máy của bạn đều không thể truy cập gói Django mới mà bạn vừa cài đặt.

Để sử dụng lệnh máy chủ sử dụng môi trường ảo của bạn, trong khi trong bối cảnh của môi trường ảo, hãy sử dụng:

(project_name) $ cd / đường dẫn / đến / django / dự án
(project_name) $ ./manage.py máy chủ

Tương tự, khi nhập trình thông dịch Python từ trong môi trường ảo, hãy nhập:

(tên dự án) $ python

Nó sẽ có quyền truy cập vào các gói bạn đã cài đặt bên trong môi trường.

Yêu cầu

Yêu cầu là danh sách các gói Python (phụ thuộc) mà dự án của bạn đang sử dụng trong khi nó chạy, bao gồm cả phiên bản cho mỗi gói. Dưới đây, một ví dụ cho một tệp tin.txt.txt:

dicttoxml == 1.7.4
Django == 1.11.2
h5py == 2.7.0
matplotlib == 2.0.2
numpy == 1.13.0
Gối == 4.1.1
psycopg2 == 2.7.1
pyparsing == 2.2.0
python-dateutil == 2.6.0
pytz == 2017.2
sáu == 1.10.0
xmltodict == 0.11.0

Luôn cập nhật tệp yêu cầu của bạn là cần thiết để cộng tác đúng cách với các nhà phát triển khác. Nó cũng quan trọng để giữ cho môi trường sản xuất của bạn được cấu hình đúng. Tệp này, khi được bao gồm trong kho lưu trữ mã của bạn, cho phép bạn cập nhật tất cả các gói được cài đặt trong môi trường ảo của bạn bằng cách thực hiện một dòng duy nhất trong thiết bị đầu cuối. Sau đó, bạn có thể nhận được các nhà phát triển mới và chạy ngay lập tức.

Để tạo một yêu cầu mới hoặc cập nhật một yêu cầu hiện có, hãy sử dụng từ trong môi trường ảo của bạn:

(project_name) $ pip đóng băng> tests.txt

Để thuận tiện cho bạn, hãy đảm bảo thực hiện lệnh này trong thư mục đang được theo dõi bởi kho Git của bạn. Điều này cho phép các phiên bản khác của mã cũng có quyền truy cập vào tệp tests.txt.

Nếu nhà phát triển mới tham gia nhóm hoặc nếu bạn muốn định cấu hình môi trường mới bằng cách sử dụng cùng các gói được liệt kê trong tệp tests.txt, hãy thực thi trong ngữ cảnh môi trường ảo:

(project_name) $ cd / đường dẫn / đến / yêu cầu / tệp
(project_name) $ pip cài đặt -r tests.txt

Tất cả các yêu cầu được liệt kê trong tệp sẽ ngay lập tức được cài đặt trong môi trường ảo của bạn. Các phiên bản cũ hơn sẽ được cập nhật và các phiên bản mới hơn sẽ được hạ cấp để phù hợp với danh sách chính xác của tests.txt. Hãy cẩn thận - có thể có sự khác biệt giữa các môi trường mà bạn vẫn muốn tôn trọng.

Tôi rất khuyên bạn nên tích hợp các lệnh này vào luồng công việc của bạn. Cập nhật tệp tests.txt trước khi đẩy mã vào kho lưu trữ và cài đặt tệp tests.txt sau khi kéo mã từ kho lưu trữ.

Tín dụng: https://www.djangoproject.com/

Cấu hình cài đặt tốt hơn

Django ra mắt với một tập tin cài đặt rất cơ bản nhưng hữu ích. Điều này xác định các cấu hình chính và hữu ích nhất cho dự án của bạn. Các tập tin cài đặt rất đơn giản. Nhưng đôi khi, với tư cách là nhà phát triển làm việc trong nhóm hoặc khi thiết lập môi trường sản xuất, bạn cần nhiều hơn một tệp cài đặt cơ bản.

Nhiều tệp cài đặt cho phép bạn dễ dàng xác định các cấu hình được thiết kế riêng cho từng môi trường như:

ALLOWED_HOSTS # cho môi trường sản xuất
GỬI
DATABASES # cho các nhà phát triển khác nhau trong cùng một nhóm

Hãy để tôi giới thiệu cho bạn một cách tiếp cận mở rộng để định cấu hình tệp cài đặt của bạn. Nó cho phép bạn duy trì các phiên bản khác nhau và sử dụng phiên bản bạn muốn tại bất kỳ thời điểm nào và trong bất kỳ môi trường nào.

Đầu tiên, điều hướng đến đường dẫn tệp settings.txt của bạn:

(project_name) $ cd / path / to / settings / file

Sau đó, tạo một mô-đun mới gọi là cài đặt (mô-đun là thư mục chứa tệp __init__.py):

(project_name) $ mkdir cài đặt

Bây giờ, đổi tên tệp cài đặt của bạn thành cơ sở và đặt nó vào trong mô-đun mới mà bạn đã tạo:

(project_name) $ mv settings.py settings / base.py

Trong ví dụ này, tôi giả sử rằng bạn muốn định cấu hình một tệp cài đặt cho môi trường phát triển và một cho môi trường sản xuất của bạn. Các nhà phát triển khác nhau trong cùng một nhóm có thể sử dụng cùng một cách tiếp cận để xác định các tệp cài đặt khác nhau.

Đối với môi trường phát triển của bạn, hãy tạo:

(project_name) $ nano settings / Development.py

Sau đó gõ:

từ .base nhập *
DEBUG = Đúng

và lưu tệp bằng cách nhấn Ctrl + O, Enter và sau đó Ctrl + X.

Đối với môi trường sản xuất của bạn tạo ra:

(project_name) $ nano settings / sản xuất

và gõ:

từ .base nhập *
DEBUG = Sai
ALLOWED_HOSTS = [‘app.project_name.com triệt,]

Bây giờ, bất cứ khi nào bạn muốn thêm hoặc cập nhật các cài đặt của một môi trường cụ thể, bạn có thể dễ dàng thực hiện nó trong tệp cài đặt của riêng nó.

Bạn có thể tự hỏi - làm thế nào Django biết tập tin cài đặt nào sẽ tải trên mỗi môi trường? Đó là những gì tập tin __init__.py được sử dụng cho. Ví dụ, khi Django tìm các cài đặt cài đặt, nó được sử dụng để tải khi chạy máy chủ, giờ đây, nó sẽ tìm thấy một mô-đun cài đặt thay vì một tệp cài đặt. Nhưng miễn là nó có một mô-đun chứa tệp __init__.py, theo như Django có liên quan, thì nó cũng chính xác như vậy. Django sẽ tải tệp __init__.py và thực thi bất cứ điều gì được ghi trong đó.

Do đó, chúng tôi cần xác định tệp cài đặt nào chúng tôi muốn tải bên trong tệp __init__.py bằng cách thực thi:

(project_name) $ settings / __ init__.py

và sau đó, đối với môi trường sản xuất, ví dụ, bằng cách nhập:

từ nhập sản phẩm. *

Bằng cách này, Django sẽ tải tất cả các cài đặt cơ sở và sản xuất mỗi khi nó bắt đầu. Ma thuật?

Bây giờ, cấu hình duy nhất còn lại là giữ __init__.py trong tệp .gitignore của bạn để nó không được bao gồm trong các lần đẩy và kéo. Khi bạn đã thiết lập một môi trường mới, đừng quên tạo một tệp __init__.py mới trong mô-đun cài đặt. Sau đó nhập tệp cài đặt được yêu cầu chính xác như chúng tôi đã làm trước đây.

Trong bài viết này, chúng tôi đã đề cập đến ba thực tiễn tốt nhất để thiết lập dự án Django tốt hơn:

  • Làm việc trong môi trường ảo
  • Luôn cập nhật tệp tests.txt và sử dụng liên tục trong luồng công việc của bạn
  • Thiết lập mảng cài đặt dự án tốt hơn

Bạn đã làm theo những thực hành tốt nhất trong dự án cuối cùng của bạn? Bạn có bất kỳ hiểu biết để chia sẻ? Ý kiến ​​được đánh giá cao.

Bạn thấy nó có ích chứ? Nếu vậy, xin vui lòng cho tôi một số vỗ tay để nhiều người xem bài viết.

Đây là phần 1 trong loạt bài về các thực tiễn tốt nhất để phát triển Django. Theo dõi tôi để nhận được cập nhật ngay lập tức khi các phần tiếp theo có sẵn.

Tìm thêm lời khuyên tuyệt vời cho các doanh nhân công nghệ tại CodingStartups.