Como criar um projeto Django a partir de um modelo

Olá de novo! Especialmente para os alunos do curso "Desenvolvedor Web em Python", preparamos outra tradução interessante.





Um modelo de projeto Django é uma maneira natural de resolver problemas que surgem quando o formato padrão do projeto Django não atende mais aos requisitos. Hoje, neste guia, você aprenderá como criar seu próprio projeto a partir de um modelo.

O que é um modelo de projeto no Django?


Um dos recursos pouco conhecidos do Django é a capacidade de criar um projeto a partir de um modelo, ou seja, uma estrutura de diretório personalizada.

Isso é conveniente quando o formato padrão do projeto não é mais suficiente (e definitivamente não será suficiente quando você deseja implantar sua solução em produção, acredite em mim) ou quando chegar ao ponto em que utilizará as mesmas configurações repetidamente para muitos projetos no Django.

Um modelo de projeto Django nada mais é do que um projeto com uma estrutura de diretório personalizada predefinida que você pode criar em minutos.
Um exemplo do modelo popular do Django é o django-cookiecutter . Django cookiecutterEle possui uma ampla gama de funções e configurações que já estão prontas para implantação auto-suficiente na produção; esse é o caminho que pode ser usado para criar quase qualquer novo projeto no Django.

No entanto, o django-cookiecutter às vezes é redundante, especialmente para iniciantes, portanto, antes de usá-lo, crie um modelo Django mais simples que possa ajudá-lo a entender melhor o básico.

Nas seções a seguir, você aprenderá como criar seu próprio modelo.

Como criar seu próprio modelo de projeto Django


Para começar, crie um ambiente virtual Python na pasta selecionada e instale o Django (observe que estes são quatro comandos separados):

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

Em seguida, crie um projeto Django com:

django-admin startproject project_name .

Preste atenção ao nome, ele deve ser exatamente project_name . Depois disso, abra o projeto no editor.

(Observe que em nosso exemplo, usei project_name para a pasta e o nome do projeto).

Agora você precisa olhar para cada arquivo no projeto e substituir todos project_name com {{project_name}} (a única linha sed comando é bom).

Arquivos que você precisará modificar:

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

Como você deve ter adivinhado, a variável {{project_name}} é um espaço reservado. Por exemplo, em manage.py, você precisará substituir o seguinte:

# manage.py

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

Nisto:

# manage.py

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

No arquivo wsgi.py, você altera isso:

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

Para o seguinte:

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

Etc.

Além disso, você pode criar qualquer configuração que desejar, ou melhor ainda, analisar as configurações do Django em arquivos separados para desenvolvimento, teste e produção. Você encontrará um exemplo aqui .

Antes de prosseguir para a próxima etapa, remova o ambiente virtual do modelo de projeto.

Como criar um projeto Django a partir do seu próprio modelo


Agora que você possui o modelo de projeto, pode usá-lo.

Para fazer isso, crie um novo ambiente virtual Python em outra pasta e instale o Django:

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

Agora, em vez de apenas executar o django-admin startproject , passaremos o sinalizador --template para instalar a partir do nosso modelo. Suponha que, se você criou um modelo no diretório inicial ~ / project-name , faça:

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

Este comando criará um novo projeto Django a partir do modelo.

(Observe que neste exemplo, usei new-django-project como pasta externa e new_django_project para o nome do projeto).

Agora você pode se perguntar se é possível usar um modelo remoto do repositório no GitHub, por exemplo. Sim, claro!

Como criar um projeto Django a partir de um modelo remoto


O sinalizador --template do projeto inicial pode aceitar um URL como fonte remota. Então você pode criar um projeto Django a partir de um modelo remoto, por exemplo:

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

Bônus: modelos para tudo


Além de padronizar os arquivos relacionados ao Django, você pode fazer o mesmo para qualquer outro arquivo no projeto.

Imagine que você precisa implantar no Heroku onde um Procfile é necessário . Para passar o Procfile pelo sistema de modelos para que {{project_name}} seja substituído pelo nome real do projeto, você pode executar o startproject com o sinalizador --name .

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

Verifique se o Procfile possui um espaço reservado para project_name :

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

Fontes


Para criar um modelo Django sofisticado, dê uma olhada no ponee , um modelo Django leve, pronto para uso com o Heroku.

Aqui está um material tão pequeno, mas interessante. Estamos aguardando seus comentários e somos convidados para um webinar gratuito , no qual aprenderemos detalhadamente como testar projetos no Flask, escrever e executar testes para projetos no Flask, criar dados de teste usando o Faker e o Factory Boy.

All Articles