Forbedre dit Django-projekt med disse bedste praksis

Django er en robust, open source, Python-baseret ramme til opbygning af webapplikationer. Dens popularitet er steget i løbet af de sidste par år, og den er allerede moden og vidt brugt med et stort samfund bag sig.

Blandt andre Python-baserede rammer til oprettelse af webapplikationer (som Flask og Pyramid) er Django langt den mest populære. Det understøtter både Python version 2.7 og Python 3.6. Men på tidspunktet for denne artikel er Python 2.7 stadig den mere tilgængelige version med hensyn til community, tredjepartspakker og online dokumentation. Django er sikker, når den bruges korrekt, og giver store dimensioner af fleksibilitet. Det er vejen at gå, når du udvikler applikationer på serversiden ved hjælp af Python.

Google Trends af de 3 mest populære Python webudviklingsrammer

Som en erfaren Python- og Django-udvikler vil jeg dele med dig nogle af de bedste fremgangsmåder til et Django-setup, som jeg har lært og samlet gennem årene. Uanset om du har et par Django-projekter under dit bælte, eller du lige er ved at starte din første fra bunden, kan den bedste praksis, der er beskrevet her muligvis hjælpe dig med at oprette bedre applikationer nede på vejen.

Jeg skrev denne artikel fra en meget praktisk tankegang, så du kan tilføje nogle værktøjer til din udviklingsværktøjskasse med det samme. Du kan endda oprette en avanceret brugerdefineret Django-kedelplade til dine næste projekter.

Med henblik på denne artikel antager jeg, at du bruger en Linux Ubuntu-maskine. I hele artiklen starter nogle kodelinjer med et $-tegn. Disse bruges til at understrege, at denne linje skal indsættes i terminalen. Sørg for at kopiere linjen uden $ -tegnet.

Virtuelt miljø

Mens du udvikler Python-baserede applikationer, er det vedvarende at bruge tredjepartspakker. Disse pakker opdateres ofte, så det er vigtigt at holde dem organiserede. Når du udvikler flere og flere projekter på den samme lokale maskine, er det udfordrende at holde styr på den aktuelle version af hver pakke. Det er umuligt at bruge forskellige versioner af den samme pakke til forskellige projekter. Desuden kan opdatering af en pakke på et projekt muligvis ødelægge funktionaliteten på et andet, og vice versa.

Det er her Python Virtual Environment er praktisk. Sådan installeres brug af virtuelt miljø:

$ apt-get-opdatering
$ apt-get install python-pip python-dev build-essential
$ export LC_ALL = "en_US.UTF-8" # kan være nødvendigt, hvis du får en fejl fra næste linje
$ pip installation - opgrader pip
$ pip-installation - opgrader virtualenv
$ mkdir ~ / .virtualenvs
$ pip installerer virtualenvwrapper
$ eksport WORKON_HOME = ~ / .virtualenvs
$ nano ~ / .bashrc

Føj denne linje til slutningen af ​​filen:

. /usr/local/bin/virtualenvwrapper.sh

Kør derefter:

$. .bashrc

Efter installationen skal du oprette et nyt virtuelt miljø til dit projekt ved at skrive:

$ mkvirtualenv projektnavn

Mens du er i forbindelse med dit virtuelle miljø, vil du bemærke, at et præfiks føjes til terminalen, som:

(projektnavn) ofir @ legeplads: ~ $

For at deaktivere (forlade) det virtuelle miljø og vende tilbage til Python 's vigtigste kontekst, skal du bruge:

$ deaktivere

Brug for at aktivere (starte) den virtuelle miljøsammenhæng:

$ workon projektnavn

Brug for at liste over de virtuelle miljøer, der findes på din lokale maskine:

$ lsvirtualenv

Hvis du holder dine projektafhængigheder (pakker) i et virtuelt miljø på din maskine, kan du holde dem i et isoleret miljø. Du bruger dem kun til et enkelt (eller flere) projekter. Når du opretter et nyt virtuelt miljø, starter du et frisk miljø, uden at der er installeret nogen pakker i det. Derefter kan du f.eks. Bruge:

(projektnavn) $ pip installere Django

til installation af Django i dit virtuelle miljø, eller:

(projektnavn) $ pip installere Django == 1.11

til installation af version 1.11 af Django kun tilgængelig inden for miljøet.

Hverken din vigtigste Python-tolk eller de andre virtuelle miljøer på din maskine vil kunne få adgang til den nye Django-pakke, du lige har installeret.

For at bruge kommandoen runserver ved hjælp af dit virtuelle miljø, mens du er i forbindelse med det virtuelle miljø, skal du bruge:

(projektnavn) $ cd / sti / til / django / projekt
(projektnavn) $ ./manage.py runserver

På samme måde, når du indtaster Python-tolken inden for det virtuelle miljø, skal du indtaste:

(projektnavn) $ python

Det har adgang til pakker, du allerede har installeret i miljøet.

Krav

Krav er listen over Python-pakker (afhængigheder), dit projekt bruger, mens det kører, inklusive versionen for hver pakke. Her er et eksempel på en krav.txt-fil:

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
seks == 1.10.0
xmltodict == 0.11.0

Det er vigtigt at holde din krav.txt-fil ajour for at samarbejde korrekt med andre udviklere. Det er også vigtigt at holde dit produktionsmiljø korrekt konfigureret. Når denne fil er inkluderet i dit kodelager, kan du opdatere alle de pakker, der er installeret i dit virtuelle miljø ved at udføre en enkelt linje i terminalen. Derefter kan du få nye udviklere i gang på kort tid.

For at generere et nyt krav.txt eller opdatere et eksisterende skal du bruge inden i dit virtuelle miljø:

(projektnavn) $ pip fryse> krav.txt

For nemheds skyld skal du sørge for at udføre denne kommando i en mappe, der spores af dit Git-arkiv. Dette tillader, at andre forekomster af koden også har adgang til filen krav.txt.

Hvis en ny udvikler slutter sig til teamet, eller hvis du vil konfigurere et nyt miljø ved hjælp af de samme pakker, der er anført i filen krav.txt, skal du køre i den virtuelle miljøsammenhæng:

(projektnavn) $ cd / sti / til / krav / fil
(projektnavn) $ pip installation -r krav.txt

Alle krav, der er anført i filen, installeres straks i dit virtuelle miljø. Ældre versioner opdateres, og nyere versioner nedgraderes for at passe til den nøjagtige liste med krav.txt. Vær dog forsigtig - der kan være forskelle mellem miljøer, som du stadig ønsker at respektere.

Jeg anbefaler stærkt at integrere disse kommandoer til din arbejdsgang. Opdater filen krav.txt, inden du skubber kode til depotet, og installer filen krav.txt, når du har trukket kode fra depotet.

Kredit: https://www.djangoproject.com/

Bedre settings.py-konfiguration

Django kommer ud af boksen med en meget grundlæggende, men alligevel nyttig settings.py-fil. Dette definerer de vigtigste og mest nyttige konfigurationer til dit projekt. Filen settings.py er meget ligetil. Men sommetider, som en udvikler, der arbejder på et team, eller når du opretter et produktionsmiljø, har du brug for mere end en basisindstillinger.py-fil.

Flere indstillingsfiler giver dig mulighed for let at definere skræddersyede konfigurationer til hvert miljø separat som:

ALLOWED_HOSTS # til produktionsmiljø
FEJLFINDE
DATABASER # for forskellige udviklere på det samme team

Lad mig introducere dig til en udvidet tilgang til konfiguration af din settings.py-fil. Det giver dig mulighed for at vedligeholde forskellige versioner og bruge den, du ønsker på ethvert givet tidspunkt og i ethvert miljø.

Naviger først til din settings.py filsti:

(projektnavn) $ cd / sti / til / indstillinger / fil

Opret derefter et nyt modul kaldet indstillinger (modul er en mappe, der indeholder en __init__.py-fil):

(projektnavn) $ mkdir-indstillinger

Nu skal du omdøbe filen settings.py til base.py og placere den i det nye modul, du oprettede:

(projektnavn) $ mv settings.py indstillinger / base.py

I dette eksempel antager jeg, at du vil konfigurere en indstillingsfil til dit udviklingsmiljø og en til dit produktionsmiljø. Forskellige udviklere på det samme team kan bruge nøjagtig den samme tilgang til at definere forskellige indstillingsfiler.

Til dit udviklingsmiljø skab:

(projektnavn) $ nano-indstillinger / udvikling.py

Skriv derefter:

fra .baseimport *
DEBUG = Sandt

og gem filen ved at trykke på Ctrl + O, Enter og derefter Ctrl + X.

Opret dit produktionsmiljø:

(projektnavn) $ nano-indstillinger / produktion.py

og skriv:

fra .baseimport *
DEBUG = Falsk
ALLOWED_HOSTS = ['app.project_name.com',]

Nu, når du vil tilføje eller opdatere indstillingerne i et specifikt miljø, kan du nemt gøre det i sin egen indstillingsfil.

Du undrer dig måske - hvordan ved Django, hvilken indstillingsfil der skal indlæses på hvert miljø? Det er hvad __init__.py-filen bruges til. Når Django kigger efter settings.py, det bruges til at indlæse, når du f.eks. Kører serveren, finder den nu et indstillingsmodul i stedet for en settings.py-fil. Men så længe det er et modul, der indeholder en __init__.py-fil, hvad Django angår, er det nøjagtig den samme ting. Django indlæser filen __init__.py og udfører, hvad der er skrevet i den.

Derfor er vi nødt til at definere, hvilken indstillingsfil vi vil indlæse i __init__.py-filen ved at udføre:

(projektnavn) $ indstillinger / __ init__.py

og derefter for et produktionsmiljø, f.eks. ved at skrive:

fra .produktionsimport *

På denne måde indlæser Django alle indstillingerne for base.py og production.py, hver gang den starter. Magi?

Nu er den eneste konfiguration, der er tilbage, at opbevare __init__.py i din .gitignore-fil, så den ikke vil blive inkluderet i pushs og pulls. Når du har konfigureret et nyt miljø, skal du ikke glemme at oprette en ny __init__.py-fil i indstillingsmodulet. Importer derefter den krævede indstillingsfil nøjagtigt som vi gjorde før.

I denne artikel har vi dækket tre bedste fremgangsmåder til bedre opsætning af dit Django-projekt:

  • Arbejde i et virtuelt miljø
  • Hold filen krav.txt ajour og brug den kontinuerligt i din arbejdsgang
  • Opsætning af en bedre projektindstillingsgruppe

Har du fulgt disse bedste fremgangsmåder i dit sidste projekt? Har du nogen indsigt at dele? Kommentarer er meget værdsatte.

Fandt du dette nyttigt? I så fald skal du give mig nogle klap, så flere ser artiklen.

Dette er del 1 i serien om bedste praksis til udvikling af Django. Følg mig for at få en øjeblikkelig opdatering, når de næste dele er tilgængelige.

Find flere gode tip til teknologiske iværksættere på CodingStartups.