de Ofir Chakon

Îmbunătățiți-vă proiectul Django cu aceste cele mai bune practici

Imbunatatiti va proiectul Django cu aceste cele mai bune practici

Django este un cadru robust, open-source, bazat pe Python, pentru construirea de aplicații web. Popularitatea sa a crescut în ultimii câțiva ani și este deja matură și utilizată pe scară largă, cu o mare comunitate în spate.

Printre alte cadre bazate pe Python pentru crearea de aplicații web (cum ar fi Flask și Pyramid), Django este de departe cel mai popular. Suportă atât versiunea Python 2.7, cât și Python 3.6. Dar la momentul acestui articol, Python 2.7 este încă versiunea mai accesibilă în ceea ce privește comunitatea, pachetele terților și documentația online. Django este sigur atunci când este utilizat corect și oferă dimensiuni ridicate de flexibilitate. Este calea de urmat atunci când dezvoltați aplicații de pe server folosind Python.

1611976628 974 Imbunatatiti va proiectul Django cu aceste cele mai bune practici
Google Trends a celor mai populare 3 cadre de dezvoltare web Python

În calitate de dezvoltator experimentat Python și Django, vă voi împărtăși câteva dintre cele mai bune practici pentru o configurare Django pe care am învățat-o și am adunat-o de-a lungul anilor. Indiferent dacă aveți câteva proiecte Django în brațe sau sunteți pe punctul de a începe primul dvs. de la zero, cele mai bune practici descrise aici vă pot ajuta să creați aplicații mai bune pe drum.

Am scris acest articol dintr-o mentalitate foarte practică, astfel încât să puteți adăuga imediat câteva instrumente în cutia dvs. de instrumente de dezvoltare. Puteți chiar să creați un cazan Django personalizat avansat pentru următoarele proiecte.

În scopul acestui articol, presupun că utilizați o mașină Linux Ubuntu. De-a lungul articolului, unele linii de cod încep cu a $ semn. Acestea sunt folosite pentru a sublinia faptul că această linie ar trebui inserată în terminal. Asigurați-vă că copiați linia fără $ semn.

Mediu virtual

În timp ce dezvoltați aplicații bazate pe Python, utilizarea pachetelor terțe este un lucru continuu. Aceste pachete sunt actualizate frecvent, deci menținerea lor organizată este esențială. Când dezvoltați din ce în ce mai multe proiecte pe aceeași mașină locală, este dificil să țineți evidența versiunii actuale a fiecărui pachet. Este imposibil să folosiți versiuni diferite ale aceluiași pachet pentru proiecte diferite. Mai mult decât atât, actualizarea unui pachet într-un proiect ar putea întrerupe funcționalitatea pe un alt proiect și invers.

Acolo este Python Virtual Environment este util. Pentru a instala mediul virtual utilizați:

$ apt-get update
$ apt-get install python-pip python-dev build-essential

$ export LC_ALL="en_US.UTF-8" # might be necessary in case you get an error from the next line

$ pip install --upgrade pip
$ pip install --upgrade virtualenv
$ mkdir ~/.virtualenvs
$ pip install virtualenvwrapper
$ export WORKON_HOME=~/.virtualenvs
$ nano ~/.bashrc

Adăugați această linie la sfârșitul fișierului:

. /usr/local/bin/virtualenvwrapper.sh

Apoi executați:

$ . .bashrc

După instalare, creați un nou mediu virtual pentru proiectul dvs. tastând:

$ mkvirtualenv project_name

În timp ce vă aflați în contextul mediului dvs. virtual, veți observa că la terminal se adaugă un prefix, cum ar fi:

(project_name) ofir@playground:~$

Pentru a dezactiva (ieși) din mediul virtual și a reveni la contextul principal Python al mașinii dvs. locale, utilizați:

$ deactivate

Pentru a activa (porni) contextul mediului virtual, utilizați:

$ workon project_name

Pentru a lista mediile virtuale existente în mașina dvs. locală, utilizați:

$ lsvirtualenv

Păstrarea dependențelor (pachetelor) de proiect într-un mediu virtual de pe mașină vă permite să le păstrați într-un mediu izolat. Le folosiți numai pentru un singur (sau mai multe) proiecte. Când creați un mediu virtual nou, începeți un mediu nou, fără pachete instalate în el. Apoi puteți utiliza, de exemplu:

(project_name) $ pip install Django

pentru instalarea Django în mediul dvs. virtual sau:

(project_name) $ pip install Django==1.11

pentru instalarea versiunii 1.11 a Django accesibilă numai din mediul înconjurător.

Nici interpretul principal Python și nici celelalte medii virtuale de pe mașina dvs. nu vor putea accesa noul pachet Django pe care tocmai l-ați instalat.

Pentru a utiliza comanda runserver folosind mediul dvs. virtual, în timp ce în contextul mediului virtual, utilizați:

(project_name) $ cd /path/to/django/project
(project_name) $ ./manage.py runserver

La fel, atunci când introduceți interpretul Python din mediul virtual, tastați:

(project_name) $ python

Acesta va avea acces la pachetele pe care le-ați instalat deja în mediul înconjurător.

Imbunatatiti va proiectul Django cu aceste cele mai bune practici

Cerințe

Cerințele sunt lista pachetelor Python (dependențe) pe care proiectul le folosește în timp ce rulează, inclusiv versiunea pentru fiecare pachet. Iată un exemplu pentru un requirements.txt fişier:

dicttoxml==1.7.4
Django==1.11.2
h5py==2.7.0
matplotlib==2.0.2
numpy==1.13.0
Pillow==4.1.1
psycopg2==2.7.1
pyparsing==2.2.0
python-dateutil==2.6.0
pytz==2017.2
six==1.10.0
xmltodict==0.11.0

Păstrarea ta requirements.txt fișierul actualizat este esențial pentru colaborarea corectă cu alți dezvoltatori. Este, de asemenea, important pentru menținerea mediului de producție configurat corect. Acest fișier, când este inclus în depozitul de coduri, vă permite să actualizați toate pachetele instalate în mediul dvs. virtual executând o singură linie în terminal. Apoi, puteți dezvolta noi dezvoltatori în scurt timp.

Pentru a genera un nou requirements.txt sau pentru a actualiza unul existent, utilizați din mediul virtual:

(project_name) $ pip freeze > requirements.txt

Pentru comoditate, asigurați-vă că executați această comandă într-un folder care este urmărit de depozitul dvs. Git. Aceasta permite altor instanțe ale codului să aibă acces la requirements.txt fișier, de asemenea.

Dacă un nou dezvoltator se alătură echipei sau dacă doriți să configurați un mediu nou folosind aceleași pachete listate în requirements.txt fișier, executați în contextul mediului virtual:

(project_name) $ cd /path/to/requirements/file
(project_name) $ pip install -r requirements.txt

Toate cerințele enumerate în fișier vor fi instalate imediat în mediul dvs. virtual. Versiunile mai vechi vor fi actualizate și versiunile mai noi vor fi retrogradate pentru a se potrivi cu lista exactă a requirements.txt. Aveți grijă totuși – ar putea exista diferențe între medii pe care încă doriți să le respectați.

Recomand cu tărie integrarea acestor comenzi în fluxul de lucru. Actualizați fișierul requirements.txt înainte de a împinge codul în depozit și instalați fișierul requirements.txt după extragerea codului din depozit.

1611976629 319 Imbunatatiti va proiectul Django cu aceste cele mai bune practici
Credit: https://www.djangoproject.com/

Mai bine settings.py configurare

Django iese din cutie cu un element foarte simplu, dar util settings.py fişier. Aceasta definește configurațiile principale și cele mai utile pentru proiectul dvs. settings.py fișierul este foarte simplu. Dar, uneori, ca dezvoltator care lucrează într-o echipă sau când configurați un mediu de producție, aveți nevoie de mai multe elemente de bază settings.py fişier.

Mai multe fișiere de setări vă permit să definiți cu ușurință configurații personalizate pentru fiecare mediu separat, cum ar fi:

ALLOWED_HOSTS # for production environment
DEBUG
DATABASES # for different developers on the same team

Permiteți-mi să vă prezint o abordare extinsă pentru configurarea settings.py fişier. Vă permite să mențineți diferite versiuni și să o utilizați pe cea dorită în orice moment și în orice mediu.

Mai întâi, navigați la settings.py calea fișierului:

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

Apoi creați un nou modul numit setări (modulul este un folder care conține un __init__.py fişier):

(project_name) $ mkdir settings

Acum, redenumiți-vă settings.py fișierul în base.py și plasați-l în noul modul pe care l-ați creat:

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

Pentru acest exemplu, presupun că doriți să configurați un fișier de setări pentru mediul dvs. de dezvoltare și unul pentru mediul de producție. Diferenți dezvoltatori din aceeași echipă pot folosi exact aceeași abordare pentru definirea fișierelor de setări diferite.

Pentru mediul dvs. de dezvoltare creați:

(project_name) $ nano settings/development.py

Apoi tastați:

from .base import *

DEBUG = True

și salvați fișierul lovind Ctrl + O, Enter și apoi Ctrl + X.

Pentru mediul dvs. de producție creați:

(project_name) $ nano settings/production.py

și tastați:

from .base import *

DEBUG = False
ALLOWED_HOSTS = [‘app.project_name.com’, ]

Acum, ori de câte ori doriți să adăugați sau să actualizați setările unui anumit mediu, îl puteți face cu ușurință în propriul fișier de setări.

S-ar putea să vă întrebați – cum știe Django ce fișier de setări să încarce pe fiecare mediu? Asta este ceea ce __init__.py fișierul este utilizat pentru. Când Django caută settings.py se încărca atunci când rulează serverul, de exemplu, acum găsește mai degrabă un modul de setări decât un settings.py fişier. Dar atâta timp cât este un modul care conține un __init__.py fișier, în ceea ce privește Django, este exact același lucru. Django va încărca __init__.py înregistrați și executați orice este scris în el.

Prin urmare, trebuie să definim ce fișier de setări dorim să încărcăm în __init__.py fișier executând:

(project_name) $ settings/__init__.py

și apoi, pentru un mediu de producție, de exemplu, tastând:

from .production import *

În acest fel, Django va încărca toate setările base.py și production.py de fiecare dată când începe. Magie?

Acum, singura configurație rămasă este să păstrezi fișierul __init__.py în dumneavoastră .gitignore fișier, astfel încât acesta să nu fie inclus în împingeri și trageri. După ce configurați un mediu nou, nu uitați să creați un nou __init__.py din interiorul modulului de setări. Apoi importați fișierul de setări necesar exact așa cum am făcut înainte.

În acest articol am abordat trei bune practici pentru o mai bună configurare a proiectului dvs. Django:

  • Lucrul într-un mediu virtual
  • Păstrarea requirements.txt fișier actualizat și folosindu-l continuu în fluxul de lucru
  • Configurarea unui set mai bun de setări de proiect

Ați urmat aceste bune practici în ultimul dvs. proiect? Aveți informații de partajat? Comentariile sunt foarte apreciate.

Ați găsit acest lucru util? Dacă da, vă rog să-mi dați câteva aplauze pentru ca mai mulți oameni să vadă articolul.

Aceasta este partea 1 din seria despre cele mai bune practici pentru dezvoltarea Django. Urmăriți-mă pentru a primi o actualizare imediată după ce următoarele piese sunt disponibile.

Găsiți mai multe sfaturi excelente pentru antreprenorii tehnologici la CodingStartups.