Propulsé par Cookiecutter, Cookiecutter Django est un framework permettant de démarrer rapidement des projets Django prêts pour la production.
Ces fonctionnalités peuvent être activées lors de la configuration initiale du projet.
Ce projet est un projet open source géré par des bénévoles. Vous pouvez nous parrainer via OpenCollective ou individuellement via GitHub Sponsors :
Projets qui apportent un soutien financier aux responsables :
Two Scoops of Django 3.x est la meilleure référence Django sur le thème de la crème glacée dans l'univers !
PyUp vous propose des mises à jour automatisées de sécurité et de dépendance utilisées par Google et d'autres organisations. Gratuit pour les projets open source !
Imaginons que vous souhaitiez créer un projet Django appelé "redditclone". Plutôt que d'utiliser startproject
puis de modifier les résultats pour inclure votre nom, votre adresse e-mail et divers problèmes de configuration qui sont toujours oubliés jusqu'au pire moment possible, demandez à Cookiecutter de faire tout le travail.
Tout d’abord, procurez-vous Cookiecutter. Croyez-moi, c'est génial :
$ pip install "cookiecutter>=1.7.0"
Maintenant, exécutez-le sur ce dépôt :
$ cookiecutter https://github.com/cookiecutter/cookiecutter-django
Vous serez invité à saisir certaines valeurs. Fournissez-les, puis un projet Django sera créé pour vous.
Attention : Après ce point, remplacez 'Daniel Greenfeld', 'pydanny', etc. par vos propres informations.
Répondez aux invites avec les options souhaitées. Par exemple:
Cloning into 'cookiecutter-django'...
remote: Counting objects: 550, done.
remote: Compressing objects: 100% (310/310), done.
remote: Total 550 (delta 283), reused 479 (delta 222)
Receiving objects: 100% (550/550), 127.66 KiB | 58 KiB/s, done.
Resolving deltas: 100% (283/283), done.
project_name [My Awesome Project]: Reddit Clone
project_slug [reddit_clone]: reddit
description [Behold My Awesome Project!]: A reddit clone.
author_name [Daniel Roy Greenfeld]: Daniel Greenfeld
domain_name [example.com]: myreddit.com
email [[email protected]]: [email protected]
version [0.1.0]: 0.0.1
Select open_source_license:
1 - MIT
2 - BSD
3 - GPLv3
4 - Apache Software License 2.0
5 - Not open source
Choose from 1, 2, 3, 4, 5 [1]: 1
Select username_type:
1 - username
2 - email
Choose from 1, 2 [1]: 1
timezone [UTC]: America/Los_Angeles
windows [n]: n
Select an editor to use. The choices are:
1 - None
2 - PyCharm
3 - VS Code
Choose from 1, 2, 3 [1]: 1
use_docker [n]: n
Select postgresql_version:
1 - 16
2 - 15
3 - 14
4 - 13
5 - 12
Choose from 1, 2, 3, 4, 5 [1]: 1
Select cloud_provider:
1 - AWS
2 - GCP
3 - None
Choose from 1, 2, 3 [1]: 1
Select mail_service:
1 - Mailgun
2 - Amazon SES
3 - Mailjet
4 - Mandrill
5 - Postmark
6 - Sendgrid
7 - Brevo (formerly SendinBlue)
8 - SparkPost
9 - Other SMTP
Choose from 1, 2, 3, 4, 5, 6, 7, 8, 9 [1]: 1
use_async [n]: n
use_drf [n]: y
Select frontend_pipeline:
1 - None
2 - Django Compressor
3 - Gulp
4 - Webpack
Choose from 1, 2, 3, 4 [1]: 1
use_celery [n]: y
use_mailpit [n]: n
use_sentry [n]: y
use_whitenoise [n]: n
use_heroku [n]: y
Select ci_tool:
1 - None
2 - Travis
3 - Gitlab
4 - Github
Choose from 1, 2, 3, 4 [1]: 4
keep_local_envs_in_vcs [y]: y
debug [n]: n
Entrez dans le projet et jetez un œil autour de vous :
$ cd reddit/
$ ls
Créez un dépôt git et placez-le ici :
$ git init
$ git add .
$ git commit -m "first awesome commit"
$ git remote add origin [email protected]:pydanny/redditclone.git
$ git push -u origin master
Jetez maintenant un œil à votre dépôt. N'oubliez pas de regarder attentivement le README généré. Génial, non ?
Pour le développement local, voir ce qui suit :
Vous remarquerez peut-être que certains éléments de ce projet ne correspondent pas exactement à ce que nous décrivons au chapitre 3. La raison en est que ce projet sert, entre autres, de banc d'essai pour tester de nouvelles idées et concepts. Parfois, ils fonctionnent, parfois non, mais le résultat final est que cela ne correspondra pas nécessairement exactement à ce qui est décrit dans le livre que j'ai co-écrit.
Si vous utilisez PyUp pour maintenir vos dépendances à jour et sécurisées, utilisez le code cookiecutter lors du paiement pour obtenir 15 % de réduction chaque mois.
Dispersés dans le Python et le HTML de ce projet se trouvent des endroits marqués de « vos affaires ». C'est ici que les bibliothèques tierces doivent être intégrées à votre projet.
Pour obtenir une prise en charge complète de MySQL en plus de Postgresql par défaut, vous pouvez utiliser ce fork de cookiecutter-django : https://github.com/mabdullahadeel/cookiecutter-django-mysql
Besoin d'une version stable ? Vous pouvez les trouver sur https://github.com/cookiecutter/cookiecutter-django/releases
C'est ce que je veux. Ce n'est peut-être pas ce que vous voulez. Ne vous inquiétez pas, vous avez plusieurs options :
Si vous avez des différences dans votre configuration préférée, je vous encourage à créer votre propre version. Une fois que votre fork fonctionne, faites-le moi savoir et je l'ajouterai à une liste de « Modèles d'emporte-pièce similaires » ici. C'est à vous de décider si vous souhaitez renommer votre fork.
Si vous renommez votre fork, je vous encourage à le soumettre aux endroits suivants :
Nous acceptons les pull request si elles sont petites, atomiques et améliorent notre propre expérience de développement de projet.
Vous avez un blog ou une publication en ligne ? Écrivez sur vos trucs et astuces cookiecutter-django, puis envoyez-nous une pull request avec le lien.