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

Το Instagram, το NatGeo, το Mozilla, το Spotify, το Pinterest και το BitBucket είναι παραδείγματα μερικών από τις εταιρείες Big-Tech που χρησιμοποιούν ήδη το Django στα περιβάλλοντα παραγωγής τους. Επίσης, με την κυκλοφορία του Django 4 και το πλήθος των χαρακτηριστικών που παρέχει, ο αριθμός των οργανισμών που χρησιμοποιούν το Django είναι βέβαιο ότι θα αυξηθεί και μαζί με αυτό η ανάγκη εγκατάστασης νέων έργων έτοιμου για παραγωγή Django.

Προβλήματα με τις νέες ρυθμίσεις έργου Django

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

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



Εάν η παραπάνω κάρτα με δυνατότητα κλικ δεν λειτουργεί, χρησιμοποιήστε τον σύνδεσμο αποθετηρίου: https://github.com/PythonBitsYT/DjangoProduction

Δομή έργου DjangoProduction

Ας δούμε τη δομή του έργου «DjangoProduction» και ας επισημάνουμε μερικές από τις βασικές διαφορές από την προεπιλεγμένη δομή του έργου Django:

  • Το "settings" δεν είναι ένα αρχείο python, μάλλον είναι ένας κατάλογος
settings
├── __init__.py
├── core_dev.py
├── core_prod.py
├── core_uat.py
├── django.py
├── env_vars.py
└── setup.py
  • Ο κατάλογος "settings" βρίσκεται μέσα στον κατάλογο "config", ο οποίος μοιάζει πολύ με αυτό που λαμβάνετε στην προεπιλεγμένη εφαρμογή με την εντολή "django-admin startproject"
config
├── __init__.py
├── asgi.py
├── settings
│   ├── __init__.py
│   ├── core_dev.py
│   ├── core_prod.py
│   ├── core_uat.py
│   ├── django.py
│   ├── env_vars.py
│   └── setup.py
├── settings_enums.py
├── static_storage_backends.py
├── storage_media_backends.py
├── urls.py
└── wsgi.py
  • Υπάρχουν πολλά αρχεία "απαιτήσεων" για περιβάλλοντα δοκιμής, προγραμματισμού και παραγωγής
djangoprod
├── requirements_dev.txt
├── requirements_prod.txt
└── requirements_test.txt
  • Υπάρχει μια εφαρμογή που ονομάζεται "κοινή" η οποία αποτελείται από κώδικα έργου (σειριακούς, προβολές, αρίθμηση, βοηθητικά προγράμματα) που είναι κοινά σε όλες τις εφαρμογές και μπορούν να επαναχρησιμοποιηθούν
djangoprod
├── common
│   ├── __init__.py
│   ├── admin.py
│   ├── apps.py
│   ├── enums
│   │   ├── __init__.py
│   │   ├── env_enums.py
│   │   └── generic_enums.py
│   ├── exceptions
│   │   ├── __init__.py
│   ├── generic_serializers
│   │   ├── __init__.py
│   ├── generic_view_mixins
│   │   ├── __init__.py
│   │   └── custom_api_view.py
│   ├── migrations
│   │   ├── __init__.py
│   ├── model_queries
│   │   ├── __init__.py
│   ├── models
│   │   ├── __init__.py
│   ├── scripts
│   │   ├── __init__.py
│   ├── security
│   │   └── set_client_ip.py
│   └── utilities
│       ├── __init__.py
│       ├── struct_obj.py
│       └── utils
│           ├── date_util.py
│           ├── generic_util.py
│           ├── random_util.py
│           └── validation_util.py

Θα εξετάσουμε καθεμία από αυτές τις διαφορές στα επόμενα μέρη αυτού του άρθρου. Θα κάνουμε επίσης μια βαθιά βουτιά στις διαμορφώσεις της μονάδας ρυθμίσεων και πώς αυτή η δομή φιλοξενεί πολλαπλά περιβάλλοντα ανάπτυξης — DEV, UAT και PROD καλύτερα.

[Django Project Setup for Production] (Μέρος — 2) Το πακέτο ρυθμίσεων: https://medium.com/@rishabhojha11/549e7935bbd0