– 16/11/2011Posted in: Ambiente de Trabalho, Django, programação, Python, Selecionados, Web
Gostaria de apresentar essa app que fiz a pouco tempo(e que ainda estou desenvolvendo) para facilitar e agilizar o desenvolvimento do seu projeto Django de forma mais padronizada e modularizada: Django Structurer
Depois de muita dor de cabeça, consegui fazer com que essa app seja instalada facilmente usando o pip, então é a penas fazer:
pip install django-structurer
djstruct.py proj "meuProjeto"
Ao executar esse comando, um projeto django é criado na pasta em que o usuário usou o comando.
Estrutura Básica Padrão
A estrutura básica que o projeto é criado, foi feita pensando em diversos detalhes para a modularização de todo o projeto e para deixar de forma mais organizada, assim facilita o entendimento para novos integrantes no projeto e outros detalhes.
Segue uma imagem de como ficaria o projeto gerado com o comando anterior:
Personalizando a Estrutura De Projetos
"Mas Arruda, na minha empresa a gente não usa esse padrão não, usamos um pouco diferente, como faço?"
Pensando nisso, já provi a solução:
O Django Structurer permite uma total personalização da estrutura a ser usada.
Para criar sua própria configuração é preciso a penas fazer um arquivo no formato YAML descrevendo como você quer sua organização.
Segue um exemplo de um possível conteúdo do arquivo YAML:
Abaixo mostrarei um trecho de um arquivo de configuração, e irei explicar qual a estrutura de diretórios que ele gera:
- name: pasta1
- name: pasta2
- name: arquivo.txt
- name: $project_name
- name: __init__.py
- name: manage.py
snippets: [default.manage.full]
Isso irá fazer uma estrutura de arquivos desse tipo:
|meu_projeto
|----pasta1
|----pasta2
|----arquivo.txt
|----meu_projeto
|----manage.py
Onde tem escrito $project_name será substituído pelo nome do projeto que está sendo criado.
Para fazer uma pasta basta por descrever novos arquivos dentro da parte archives.
Para por um arquivo, basta não por o atributo archives.
"Ok, as pastas estão agora no meu padrão, mas os arquivos não tem o conteúdo que eu costumo por em minha empresa. #comufas ?"
Para customizar o conteúdo de um arquivo é simples, basta usar os snippets já prontos do Django Struct ou fazer os seus proprios.
Mas o que são Snippets
Snippets são trechos de código, texto ou dados serializados.
No exemplo anterior, o arquivo manage.py tem o conteúdo completo de um arquivo manage.py normal, isso foi definido quando fizemos:
Um outro exemplo de snippets que pode ser utilizado é o cabeçalho contendo a codificação de um arquivo python
Para fazer isso basta adicionar um outro snippet antes do citado: default.general.header.
snippets: [default.general.header, default.manage.full]
OBS: Lembrando que a ordem em que são escritos os snippets são a ordem em que eles serão escritos
Configuração Para Personalizar
"Ok, eu posso usar diferentes snippets, mas e se eu quiser usar meus proprios snippets, como faço?"
Para usar diferentes snippets basta criar uma pasta em que você ira salvar seus snippets, ex:
mkdir ~/.myStructs
e criar no .bashrc para ter o seu DJSTRUCT_HOME nas variáveis de ambiente:
export DJSTRUCT_HOME=/home/usuario/.myStructs
Dentro da sua pasta ".myStructs" crie uma pasta "Snippets", e dentro dela coloque seus arquivos, lembrando de por a terminação ".snippets".
Então se você quer por um novo snippet com imports que costuma usar sempre, você pode por eles num arquivo: "imports_importantes.snippets" dentro da pasta ".myStructs/Snippets".
Pronto, seu snippet já pode ser usado.
Para chamar ele nas configurações do seu projeto, basta por no atributo "snippets":
[imports_importantes, uma_pasta.outro_snippet]
Como usar sua própria configuração
Para usar o seu próprio arquivo de configuração(o arquivo YAML com a organização do projeto) você usa o comando da seguinte forma:
djstruct.py proj "meu_projeto" MinhasConfiguracoes.yaml
Isso é o terceiro parâmetro é o arquivo de configuração que será usado.
Sendo que você pode por o seu arquivo de configuração dentro de seu DJSTRUCT_HOME, para acessar facilmente o mesmo.
Usando uma Configuração por Default
Você pode deixar uma configuração como sendo a padrão setando uma outra variável de ambiente:
DJSTRUCT_DEFAULT = /home/usuario/.myStructs/MinhasConfiguracoes.yaml
Assim você pode usar o comando sem ter que passar qual a configuração que por default ele ira carregar a indicada:
Gostaria de ajudar? Dar alguma dica, ou disponibilizar sua própria configuração/snippets?
Faça um fork do projeto no github: https://github.com/arruda/django-structurer e contribua para tornar essa uma ferramenta melhor.
Isso é tudo, espero que isso ajude bastante pessoas a desenvolverem e iniciarem seus projetos mais rapidamente de maneira mais organizada.
Tags: Django, facil, organizado, projeto, start, struct, structurer
Posted November 18, 2011 at 1:09 PM
Muito bom cara, vai pros bookmarks
Posted April 13, 2012 at 11:16 AM
Muito bom mesmo, mas tenho uma dúvida, quando fizer o deploy, basta eu alterar no settings/__init.py__ a variável IN_PRODUCTION de False para True para ter acesso a setting env_prod.py ao invés da setting de desenvolvimento?
Puts, acabei de ver, realmente tem um pequeno erro nesse código, vou alterar já.
Mas Robson, a idéia é você setar uma variável de ambiente no teu servidor com o nome de CURRENT_ENV e por nela o valor 'PROD'.
dessa forma: export CURRENT_ENV = 'PROD'
Assim no __init__.py ele vai pegar essa variável de ambiente(se não encontrar ele considera q é em desenvolvimento), e se ela for == 'PROD' então ele carrega as configurações de produção =)
OBS: Já alterei no repositorio no github, mas ainda não atualizei no Pypi(não estou em casa), mas assim que chegar atualizo o package.