Βελτιώστε το έργο σας Django με αυτές τις βέλτιστες πρακτικές

Το Django είναι ένα ισχυρό, ανοιχτού κώδικα, βασισμένο στην Python, για την κατασκευή εφαρμογών ιστού. Η δημοτικότητά του έχει αυξηθεί τα τελευταία δύο χρόνια και είναι ήδη ώριμη και χρησιμοποιείται ευρέως με μια μεγάλη κοινότητα πίσω από αυτό.

Μεταξύ άλλων πλαισίων που βασίζονται στην Python για τη δημιουργία εφαρμογών ιστού (όπως Flask και Pyramid), το Django είναι μακράν το πιο δημοφιλές. Υποστηρίζει τόσο Python έκδοση 2.7 όσο και Python 3.6. Αλλά κατά τη χρονική στιγμή αυτού του άρθρου, η Python 2.7 εξακολουθεί να είναι η πιο προσιτή έκδοση όσον αφορά τα πακέτα κοινότητας, τα τρίτα μέρη και την ηλεκτρονική τεκμηρίωση. Το Django είναι ασφαλές όταν χρησιμοποιείται σωστά και παρέχει μεγάλες διαστάσεις ευελιξίας. Είναι ο τρόπος που πηγαίνουμε όταν αναπτύσσουμε εφαρμογές από την πλευρά του διακομιστή χρησιμοποιώντας Python.

Google Trends από τα 3 πιο δημοφιλή πλαίσια ανάπτυξης της Python

Ως έμπειρος προγραμματιστής Python και Django, θα μοιραστώ μαζί σας ορισμένες βέλτιστες πρακτικές για μια εγκατάσταση Django, την οποία έμαθα και συγκέντρωσα όλα αυτά τα χρόνια. Είτε έχετε λίγα έργα Django κάτω από τη ζώνη σας, είτε είστε έτοιμοι να ξεκινήσετε από πρώτο χέρι το πρώτο σας, οι βέλτιστες πρακτικές που περιγράφονται εδώ θα σας βοηθήσουν να δημιουργήσετε καλύτερες εφαρμογές στο δρόμο.

Έγραψα αυτό το άρθρο από μια πολύ πρακτική νοοτροπία, ώστε να μπορείτε να προσθέσετε αμέσως κάποια εργαλεία στην εργαλειοθήκη ανάπτυξης. Μπορείτε ακόμη να δημιουργήσετε ένα προηγμένο προσαρμοσμένο boilerplate Django για τα επόμενα έργα σας.

Για τους σκοπούς αυτού του άρθρου, υποθέτω ότι χρησιμοποιείτε μια μηχανή Linux Ubuntu. Σε όλο το άρθρο, μερικές γραμμές κώδικα ξεκινούν με ένα σύμβολο $. Αυτά χρησιμοποιούνται για να τονιστεί ότι αυτή η γραμμή πρέπει να εισαχθεί στο τερματικό. Βεβαιωθείτε ότι έχετε αντιγράψει τη γραμμή χωρίς το σύμβολο $.

Εικονικό περιβάλλον

Ενώ αναπτύσσετε εφαρμογές που βασίζονται στην Python, η χρήση πακέτων τρίτων είναι συνεχής. Αυτά τα πακέτα ενημερώνονται συχνά, οπότε η διατήρησή τους είναι απαραίτητη. Όταν αναπτύσσεται όλο και περισσότερα έργα στην ίδια τοπική μηχανή, είναι δύσκολο να παρακολουθείτε την τρέχουσα έκδοση κάθε πακέτου. Είναι αδύνατο να χρησιμοποιηθούν διαφορετικές εκδόσεις του ίδιου πακέτου για διαφορετικά έργα. Επιπλέον, η ενημέρωση ενός πακέτου σε ένα έργο ενδέχεται να σπάσει τη λειτουργικότητα σε ένα άλλο και αντίστροφα.

Αυτό είναι όπου το εικονικό περιβάλλον Python έρχεται βολικό. Για να εγκαταστήσετε χρήση εικονικού περιβάλλοντος:

$ apt-get update
$ apt-get εγκατάσταση python-pip python-dev build-essential
$ export LC_ALL = "en_US.UTF-8" # ίσως είναι απαραίτητο σε περίπτωση που λάβετε ένα σφάλμα από την επόμενη γραμμή
$ pip install - upgrade pip
$ pip install - αναβάθμιση virtualenv
$ mkdir ~ / .virtualenvs
$ pip εγκαταστήστε το virtualenvwrapper
$ εξαγωγή WORKON_HOME = ~ / .virtualenvs
$ nano ~ / .bashrc

Προσθέστε αυτήν τη γραμμή στο τέλος του αρχείου:

. /usr/local/bin/virtualenvwrapper.sh

Στη συνέχεια εκτελέστε:

$. .bashrc

Μετά την εγκατάσταση, δημιουργήστε ένα νέο εικονικό περιβάλλον για το έργο σας πληκτρολογώντας:

$ mkvirtualenv project_name

Ενώ βρίσκεστε στο πλαίσιο του εικονικού περιβάλλοντος, θα παρατηρήσετε ότι στο τερματικό προστίθεται ένα πρόθεμα, όπως:

(project_name) ofir @ παιδική χαρά: ~ $

Για να απενεργοποιήσετε (έξοδο) το εικονικό περιβάλλον και να επιστρέψετε στο κύριο πλαίσιο Python του τοπικού σας μηχανήματος, χρησιμοποιήστε:

$ απενεργοποίηση

Για να ενεργοποιήσετε (ξεκινήστε) το περιβάλλον εικονικού περιβάλλοντος, χρησιμοποιήστε:

$ workon project_name

Για να ορίσετε τα εικονικά περιβάλλοντα που υπάρχουν στο τοπικό σας μηχάνημα, χρησιμοποιήστε τα εξής:

$ lsvirtualenv

Κρατώντας τις εξαρτήσεις έργου (πακέτα) σε ένα εικονικό περιβάλλον στο μηχάνημά σας, μπορείτε να τα κρατήσετε σε απομονωμένο περιβάλλον. Μπορείτε να τα χρησιμοποιήσετε μόνο για ένα (ή πολλαπλά) έργα. Όταν δημιουργείτε ένα νέο εικονικό περιβάλλον, ξεκινάτε ένα νέο περιβάλλον χωρίς εγκατεστημένα πακέτα. Στη συνέχεια μπορείτε να χρησιμοποιήσετε, για παράδειγμα:

(project_name) $ pip εγκαταστήστε το Django

για την εγκατάσταση του Django στο εικονικό σας περιβάλλον ή:

(project_name) $ pip Εγκαταστήστε Django == 1.11

για την εγκατάσταση της έκδοσης 1.11 του Django μόνο για πρόσβαση από το περιβάλλον.

Ούτε ο κύριος διερμηνέας σας Python ούτε τα άλλα εικονικά περιβάλλοντα στο μηχάνημά σας θα έχουν πρόσβαση στο νέο πακέτο Django που μόλις εγκαταστήσατε.

Για να χρησιμοποιήσετε την εντολή runserver χρησιμοποιώντας το εικονικό περιβάλλον σας, ενώ στο πλαίσιο του εικονικού περιβάλλοντος, χρησιμοποιήστε:

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

Ομοίως, κατά την είσοδο του διερμηνέα Python από το εικονικό περιβάλλον, πληκτρολογήστε:

(project_name) $ python

Θα έχει πρόσβαση σε πακέτα που έχετε ήδη εγκαταστήσει στο περιβάλλον.

Απαιτήσεις

Απαιτήσεις είναι η λίστα των πακέτων Python (εξαρτήσεων) που χρησιμοποιεί το έργο σας ενώ εκτελείται, συμπεριλαμβανομένης της έκδοσης για κάθε πακέτο. Ακολουθεί ένα παράδειγμα για ένα αρχείο requirements.txt:

dicttoxml == 1.7.4
Django == 1.11.2
h5py == 2.7.0
matplotlib == 2.0.2
numpy == 1.13.0
Μαξιλάρι == 4.1.1
psycopg2 == 2.7.1
πύρωση == 2.2.0
python-dateutil == 2.6.0
pytz == 2017.2
έξι == 1.10.0
xmltodict == 0.11.0

Η διατήρηση του αρχείου requirements.txt ενημερωμένου είναι απαραίτητη για τη σωστή συνεργασία με άλλους προγραμματιστές. Είναι επίσης σημαντικό για τη σωστή διαμόρφωση του περιβάλλοντος παραγωγής σας. Αυτό το αρχείο, όταν συμπεριλαμβάνεται στην αποθήκη κωδικών σας, σας δίνει τη δυνατότητα να ενημερώσετε όλα τα πακέτα που είναι εγκατεστημένα στο εικονικό περιβάλλον σας, εκτελώντας μια μόνο γραμμή στο τερματικό. Στη συνέχεια, μπορείτε να πάρετε νέους προγραμματιστές να λειτουργούν σε χρόνο μηδέν.

Για να δημιουργήσετε μια νέα προδιαγραφή.txt ή για να ενημερώσετε μια υπάρχουσα, χρησιμοποιήστε μέσα από το εικονικό σας περιβάλλον:

(project_name) $ pip freeze> requirements.txt

Για την καλύτερη εξυπηρέτησή σας, βεβαιωθείτε ότι εκτελέσατε αυτήν την εντολή σε ένα φάκελο που παρακολουθείται από το χώρο αποθήκευσης Git. Αυτό επιτρέπει σε άλλες περιπτώσεις του κώδικα να έχουν πρόσβαση και στο αρχείο requirements.txt.

Εάν ένας νέος προγραμματιστής συμμετέχει στην ομάδα ή εάν θέλετε να διαμορφώσετε ένα νέο περιβάλλον χρησιμοποιώντας τα ίδια πακέτα που παρατίθενται στο αρχείο requirements.txt, εκτελέστε στο περιβάλλον εικονικού περιβάλλοντος:

(project_name) $ cd / path / to / requirements / file
(όνομα_project) $ pip install -r requirements.txt

Όλες οι απαιτήσεις που αναφέρονται στο αρχείο θα εγκατασταθούν αμέσως στο εικονικό περιβάλλον σας. Οι παλαιότερες εκδόσεις θα ενημερωθούν και οι νεώτερες εκδόσεις θα υποβαθμιστούν ώστε να ταιριάζουν στην ακριβή λίστα των απαιτήσεων.txt. Προσέξτε όμως - ίσως να υπάρχουν διαφορές μεταξύ των περιβαλλόντων που εξακολουθείτε να θέλετε να σεβαστείτε.

Συστήνω ιδιαίτερα την ενσωμάτωση αυτών των εντολών στη ροή εργασίας σας. Ενημερώστε το αρχείο requirements.txt πριν πιέσετε τον κώδικα στο χώρο αποθήκευσης και εγκαταστήστε το αρχείο requirements.txt αφού τραβήξετε τον κώδικα από το αποθετήριο.

Πιστωτική: https://www.djangoproject.com/

Καλύτερη ρύθμιση settings.py

Το Django έρχεται έξω από το κουτί με ένα πολύ βασικό αλλά χρήσιμο αρχείο settings.py. Αυτό ορίζει τις κύριες και πιο χρήσιμες ρυθμίσεις για το έργο σας. Το αρχείο settings.py είναι πολύ απλό. Αλλά μερικές φορές, ως προγραμματιστής που εργάζεται σε μια ομάδα ή όταν δημιουργείτε ένα περιβάλλον παραγωγής, χρειάζεστε περισσότερα από ένα βασικά αρχεία settings.py.

Τα αρχεία πολλαπλών ρυθμίσεων σάς επιτρέπουν να ορίσετε ξεχωριστά προσαρμοσμένες διαμορφώσεις για κάθε περιβάλλον ξεχωριστά, όπως:

ALLOWED_HOSTS # για περιβάλλον παραγωγής
DEBUG
DATABASES # για διαφορετικούς προγραμματιστές στην ίδια ομάδα

Επιτρέψτε μου να σας συστήσω σε μια εκτεταμένη προσέγγιση για τη διαμόρφωση του αρχείου settings.py. Σας επιτρέπει να διατηρείτε διαφορετικές εκδόσεις και να χρησιμοποιείτε αυτό που θέλετε σε οποιαδήποτε δεδομένη στιγμή και σε οποιοδήποτε περιβάλλον.

Πρώτα, μεταβείτε στη διαδρομή αρχείου settings.py:

(όνομα_project) $ cd / path / to / settings / file

Στη συνέχεια, δημιουργήστε μια νέα ενότητα που ονομάζεται ρυθμίσεις (η ενότητα είναι ένας φάκελος που περιέχει ένα αρχείο __init__.py):

(project_name) $ mkdir

Τώρα, μετονομάστε το αρχείο settings.py στη βάση.py και τοποθετήστε το στο εσωτερικό της νέας λειτουργικής μονάδας που δημιουργήσατε:

(όνομα_project) $ mv settings.py settings / base.py

Για αυτό το παράδειγμα, υποθέτω ότι θέλετε να διαμορφώσετε ένα αρχείο ρυθμίσεων για το περιβάλλον ανάπτυξης και ένα για το περιβάλλον παραγωγής σας. Διαφορετικοί προγραμματιστές στην ίδια ομάδα μπορούν να χρησιμοποιήσουν την ίδια προσέγγιση για τον ορισμό διαφορετικών αρχείων ρυθμίσεων.

Για το περιβάλλον ανάπτυξης δημιουργήστε:

(όνομα_project) $ nano settings / development.py

Στη συνέχεια πληκτρολογήστε:

από .base import *
DEBUG = Αλήθεια

και αποθηκεύστε το αρχείο πιέζοντας Ctrl + O, Enter και έπειτα Ctrl + X.

Για το περιβάλλον παραγωγής σας δημιουργήστε:

(όνομα_project) $ nano settings / production.py

και πληκτρολογήστε:

από .base import *
DEBUG = Λάθος
ALLOWED_HOSTS = ['app.project_name.com',]

Τώρα, κάθε φορά που θέλετε να προσθέσετε ή να ενημερώσετε τις ρυθμίσεις ενός συγκεκριμένου περιβάλλοντος, μπορείτε εύκολα να το κάνετε στο δικό του αρχείο ρυθμίσεων.

Ίσως αναρωτιέστε - πώς γνωρίζει το Django ποιο αρχείο ρυθμίσεων για φόρτωση σε κάθε περιβάλλον; Για αυτό χρησιμοποιείται το αρχείο __init__.py. Όταν ο Django ψάχνει για τις ρυθμίσεις settings.py που χρησιμοποίησε για τη φόρτωσή του κατά την εκτέλεση του διακομιστή, για παράδειγμα, τώρα βρίσκει μια μονάδα ρυθμίσεων και όχι ένα αρχείο settings.py. Όσο όμως πρόκειται για μια ενότητα που περιέχει ένα αρχείο __init__.py, όσον αφορά το Django, είναι ακριβώς το ίδιο πράγμα. Ο Django θα φορτώσει το αρχείο __init__.py και θα εκτελέσει ό, τι είναι γραμμένο σε αυτό.

Επομένως, πρέπει να ορίσουμε το αρχείο ρυθμίσεων που θέλουμε να φορτώσουμε μέσα στο αρχείο __init__.py εκτελώντας:

(όνομα_project) $ settings / __ init__.py

και στη συνέχεια, για ένα περιβάλλον παραγωγής, για παράδειγμα, πληκτρολογώντας:

από την εισαγωγή .production *

Με αυτόν τον τρόπο, ο Django θα φορτώσει όλες τις ρυθμίσεις base.py και production.py κάθε φορά που ξεκινά. Μαγεία?

Τώρα, η μόνη παραμετροποίηση που παραμένει είναι να κρατήσετε το αρχείο __init__.py στο αρχείο .gitignore, έτσι ώστε να μην περιλαμβάνεται σε ωθήσεις και τραβάει. Μόλις δημιουργήσετε ένα νέο περιβάλλον, μην ξεχάσετε να δημιουργήσετε ένα νέο αρχείο __init__.py μέσα στη λειτουργική μονάδα ρυθμίσεων. Στη συνέχεια, εισαγάγετε το αρχείο ρυθμίσεων που απαιτείται ακριβώς όπως κάναμε πριν.

Σε αυτό το άρθρο έχουμε καλύψει τρεις καλύτερες πρακτικές για την καλύτερη ρύθμιση του έργου σας Django:

  • Εργασία μέσα σε ένα εικονικό περιβάλλον
  • Διατηρώντας το αρχείο requirements.txt ενημερωμένο και χρησιμοποιώντας το συνεχώς στη δουλειά σας
  • Δημιουργία καλύτερου πίνακα ρυθμίσεων έργου

Έχετε ακολουθήσει αυτές τις βέλτιστες πρακτικές στο τελευταίο σας έργο; Έχετε κάποια στοιχεία για να μοιραστείτε; Τα σχόλια εκτιμώνται ιδιαίτερα.

Θεωρήσατε αυτό χρήσιμο; Εάν ναι, παρακαλώ να μου δώσετε κάποια χτυπήματα, ώστε περισσότεροι άνθρωποι να δουν το άρθρο.

Αυτό είναι το πρώτο μέρος της σειράς σχετικά με τις βέλτιστες πρακτικές ανάπτυξης του Django. Ακολουθήστε με για να πάρετε μια άμεση ενημέρωση μόλις τα επόμενα μέρη είναι διαθέσιμα.

Βρείτε περισσότερες καλές συμβουλές για τεχνολογικούς επιχειρηματίες στο CodingStartups.