O objetivo deste projeto é fornecer uma base de código Django que servirá como passo inicial para novos projetos de backend em que se opte pela tecnologia Python/Django. Os princípios que devem guiar o projeto são:
- Fornecer o máximo possível de bibliotecas e funcionalidades básicas de toda aplicação web backend.
- Fazer o mínimo possível de suposições sobre a aplicação, mantendo-se sempre generalista.
- Encorajar um modelo de arquitetura e estilo de código que seja adaptável, extensível e siga as boas práticas de padrões de projeto.
- Preparar uma mecânica de geração de código que possibilite ao desenvolvedor instanciar o Django Base e escolher as funcionalidades que ele deseja para iniciar um novo projeto.
-
Instalar o cookiecutter, seguir as instruções de instalação na documentação:
-
Gerar o projeto a partir do template Django Setup (adicionar
--checkout nome-da-branch
para usar branch específica):
cookiecutter [email protected]:matheusfs99/django_setup.git
- Configurar as variáveis pedidas pelo cookiecutter conforme desejado para o projeto (project_name, project_slug, etc.). Cada variável está descrita abaixo:
- project_name: Nome do projeto. Aparecerá, por exemplo, no README e na documentação.
- project_slug: Nome "programático" do projeto. Será o nome da pasta raiz, por exemplo.
- project_short_description: Descrição sucinta do projeto. Aparecerá, por exemplo, no README e na documentação.
- repository_owner: Nome de usuário criador do repositório em que o projeto será versionado.
- repository_name: Nome do repositório em que o projeto será versionado.
- user_app: Responder 'y' se deseja adicionar a app de usuário customizada do Django.
Por ser este um projeto Cookiecutter, o desenvolvimento é um pouco diferente do usual, já que o código-fonte do projeto na verdade é um template de código-fonte. Normalmente, o desenvolvimento segue da seguinte forma:
- Clonar o código-fonte do projeto (se ainda não o fez).
- Na pasta do projeto clonado, gerar o código base localmente com o comando
cookiecutter .
- A escolha das configurações deve ser feita de acordo com o que se deseja desenvolver.
- Realizar as mudanças no projeto gerado (dentro da pasta project-name, se gerado com as configurações padrão).
- Quando finalizar as mudanças desejadas, refleti-las no projeto template e submetê-las para revisão*.
- Antes de submeter as mudanças é importante testar o que foi feito, repetindo o passo 2 e rodando os testes no projeto gerado.
Caso a mudança a ser feita seja muito pequena, o passo 3 pode ser pulado e o código pode ser modificado direto no template. Fica a critério do desenvolvedor decidir se é mais cômodo programar direto no template, mas precisando gerar sempre um novo projeto para testar o que foi feito; ou programar no projeto gerado, funcional e testável, mas que não será submetido, precisando portanto refletir as mudanças no template para serem submetidas.
Utilizamos a biblioteca pytest para rodar testes unitários. Seu arquivo de configuração é pytest.ini.
Para rodas os testes, é necessário ter o pytest-cookies instalado: pip install requirements.txt
e depois simplesmente rodar pytest
.
Os testes do projeto consistem em simular a geração do projeto usando cookiecutter e testar o que foi criado.
OBS: O projeto gerado tem a sua própria suíte de testes. Esses testes não são rodados dentro do teste do template cookiecutter.
Este projeto é baseado no Django Base Capyba Day