Desenvolvido por Cookiecutter, Cookiecutter Django é uma estrutura para iniciar rapidamente projetos Django prontos para produção.
Esses recursos podem ser habilitados durante a configuração inicial do projeto.
Este projeto é um projeto de código aberto administrado por voluntários. Você pode nos patrocinar via OpenCollective ou individualmente via GitHub Sponsors:
Projetos que fornecem apoio financeiro aos mantenedores:
Two Scoops of Django 3.x é a melhor referência de Django com tema de sorvete do universo!
PyUp oferece atualizações automatizadas de segurança e dependências usadas pelo Google e outras organizações. Gratuito para projetos de código aberto!
Vamos fingir que você deseja criar um projeto Django chamado “redditclone”. Em vez de usar startproject
e depois editar os resultados para incluir seu nome, e-mail e vários problemas de configuração que sempre são esquecidos até o pior momento possível, peça ao cookiecutter para fazer todo o trabalho.
Primeiro, pegue o Cookiecutter. Acredite em mim, é incrível:
$ pip install "cookiecutter>=1.7.0"
Agora execute-o neste repositório:
$ cookiecutter https://github.com/cookiecutter/cookiecutter-django
Você será solicitado a fornecer alguns valores. Forneça-os e um projeto Django será criado para você.
Aviso : Após este ponto, altere 'Daniel Greenfeld', 'pydanny', etc. para suas próprias informações.
Responda às solicitações com as opções desejadas. Por exemplo:
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
Entre no projeto e dê uma olhada:
$ cd reddit/
$ ls
Crie um repositório git e envie-o para lá:
$ git init
$ git add .
$ git commit -m "first awesome commit"
$ git remote add origin [email protected]:pydanny/redditclone.git
$ git push -u origin master
Agora dê uma olhada em seu repositório. Não se esqueça de olhar atentamente o README gerado. Incrível, certo?
Para desenvolvimento local, veja o seguinte:
Você pode notar que alguns elementos deste projeto não correspondem exatamente ao que descrevemos no capítulo 3. A razão para isso é que este projeto, entre outras coisas, serve como um banco de testes para experimentar novas ideias e conceitos. Às vezes funcionam, às vezes não, mas o resultado final é que não corresponderá necessariamente exatamente ao que está descrito no livro de que sou coautor.
Se você estiver usando o PyUp para manter suas dependências atualizadas e seguras, use o código cookiecutter durante a finalização da compra para obter 15% de desconto todos os meses.
Espalhados por todo o Python e HTML deste projeto estão locais marcados com "suas coisas". É aqui que as bibliotecas de terceiros devem ser integradas ao seu projeto.
Para obter suporte completo ao MySQL além do Postgresql padrão, você pode usar este fork do cookiecutter-django: https://github.com/mabdullahadeel/cookiecutter-django-mysql
Precisa de uma versão estável? Você pode encontrá-los em https://github.com/cookiecutter/cookiecutter-django/releases
Isso é o que eu quero. Pode não ser o que você deseja. Não se preocupe, você tem opções:
Se você tiver diferenças em sua configuração preferida, recomendo que você faça um fork para criar sua própria versão. Assim que seu fork estiver funcionando, me avise e eu o adicionarei a uma lista de ' Modelos semelhantes de Cookiecutter ' aqui. Cabe a você renomear seu fork.
Se você renomear seu fork, recomendo que você o envie para os seguintes locais:
Aceitamos solicitações pull se elas forem pequenas, atômicas e melhorarem nossa própria experiência de desenvolvimento de projetos.
Tem um blog ou publicação online? Escreva sobre suas dicas e truques do cookiecutter-django e envie-nos uma solicitação de pull com o link.