Comment créer un projet Django à partir d'un modèle

Rebonjour! Surtout pour les étudiants du cours "Développeur Web en Python", nous avons préparé une autre traduction intéressante.





Un modèle de projet Django est un moyen naturel de résoudre les problèmes qui surviennent lorsque le format de projet Django par défaut ne répond plus aux exigences. Aujourd'hui, dans ce guide, vous apprendrez à créer votre propre projet à partir d'un modèle.

Qu'est-ce qu'un modèle de projet dans Django?


L'une des fonctionnalités peu connues de Django est la possibilité de créer un projet à partir d'un modèle, c'est-à-dire une structure de répertoires personnalisée.

C'est pratique lorsque le format de projet par défaut ne suffit plus (et ce ne sera certainement pas suffisant lorsque vous souhaitez déployer votre solution en production, croyez-moi), ou lorsque vous atteignez le point où vous utiliserez les mêmes configurations encore et encore pour beaucoup de projets sur Django.

Un modèle de projet Django n'est rien de plus qu'un projet avec une structure de répertoires personnalisée prédéfinie que vous pouvez créer vous-même en quelques minutes.
Un exemple du modèle Django populaire est le django-cookiecutter . Django cookiecutterIl dispose d'un large éventail de fonctions et de configurations prêtes pour un déploiement autonome en production, c'est le chemin qui peut être utilisé pour créer presque n'importe quel nouveau projet sur Django.

Cependant, le django-cookiecutter est parfois redondant, surtout pour les débutants, donc avant de l'utiliser, créez un modèle Django plus simple qui peut mieux vous aider à comprendre les bases.

Dans les sections suivantes, vous apprendrez à créer votre propre modèle.

Comment créer votre propre modèle de projet Django


Pour commencer, créez un environnement virtuel Python dans le dossier sélectionné et installez Django (notez qu'il s'agit de quatre commandes distinctes):

mkdir project-name && cd $_
python3 -m venv venv
source venv/bin/activate
pip install django

Créez ensuite un projet Django avec:

django-admin startproject project_name .

Faites attention au nom, il doit être exactement project_name . Après cela, ouvrez le projet dans l'éditeur.

(Notez que dans notre exemple, j'ai utilisé project_name pour le dossier et pour le nom du projet).

Maintenant, vous devez regarder chaque fichier du projet et remplacer tous les project_name par {{project_name}} (une commande sed sur une seule ligne est très bien).

Fichiers à modifier:

  • manage.py
  • settings.py
  • wsgi.py
  • asgi.py

Comme vous l'avez peut-être deviné, la variable {{project_name}} est un espace réservé. Par exemple, dans manage.py, vous devrez remplacer ce qui suit:

# manage.py

def main():
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project_name.settings')
    try:
# omit

Sur ce:

# manage.py

def main():
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', '{{ project_name }}.settings')
    try:
# omit

Dans wsgi.py, vous changez ceci:

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project_name.settings')

Aux éléments suivants:

os.environ.setdefault('DJANGO_SETTINGS_MODULE', '{{ project_name }}.settings')

Etc.

De plus, vous pouvez créer n'importe quelle configuration que vous souhaitez, ou mieux encore, analyser les paramètres de Django dans des fichiers séparés pour le développement, les tests et la production. Vous en trouverez un exemple ici .

Avant de passer à l'étape suivante, assurez-vous de supprimer l'environnement virtuel du modèle de projet.

Comment créer un projet Django à partir de votre propre modèle


Maintenant que vous avez le modèle de projet, vous pouvez l'utiliser.

Pour ce faire, créez un nouvel environnement virtuel Python dans un autre dossier et installez Django:

mkdir new-django-project && cd $_
python3 -m venv venv
source venv/bin/activate
pip install django

Maintenant, au lieu d'exécuter simplement django-admin startproject , nous passerons l'indicateur --template pour l'installer à partir de notre modèle. Supposons que si vous créiez un modèle dans votre répertoire personnel ~ / project-name , vous feriez:

django-admin startproject --template ~/project-name new_django_project .

Cette commande créera un nouveau projet Django à partir du modèle.

(Notez que dans cet exemple, j'ai utilisé new-django-project comme dossier externe et new_django_project pour le nom du projet).

Vous pouvez maintenant vous demander s'il est possible d'utiliser un modèle distant depuis le référentiel sur GitHub, par exemple. Oui bien sûr!

Comment créer un projet Django à partir d'un modèle distant


L'indicateur --template pour startproject peut accepter une URL comme source distante. Vous pouvez donc créer un projet Django à partir d'un modèle distant, par exemple:

django-admin startproject --template https://github.com/username/repo/archive/master.zip new_django_project .

Bonus: des modèles pour tout


En plus de standardiser les fichiers liés à Django, vous pouvez faire de même pour n'importe quel autre fichier du projet.

Imaginez que vous devez déployer sur Heroku où un Procfile est requis . Pour passer Procfile via le système de modèles afin que {{nom_projet}} soit remplacé par le nom réel du projet, vous pouvez exécuter startproject avec l'indicateur --name .

django-admin startproject --template https://github.com/username/repo/archive/master.zip --name=Procfile new_django_project .

Assurez-vous que Procfile a un espace réservé pour nom_projet :

release: python manage.py migrate
web: gunicorn -w 3 {{ project_name }}.wsgi --log-file -

Sources


Pour créer un modèle Django sophistiqué, jetez un œil à ponee , un modèle Django léger, prêt à l'emploi avec Heroku.

Voici un matériel si petit mais intéressant. Nous attendons vos commentaires et sommes invités à un webinaire gratuit , dans le cadre duquel nous apprendrons en détail comment tester des projets sur Flask, écrire et exécuter des tests pour des projets sur Flask, créer des données de test à l'aide de Faker et Factory Boy.

All Articles