Formulários elegantes com Django

Não poupo críticas ao Django, este excelente framework em Python tem me ajudado a concluir todos meus projetos relacionados a web, se tornou o padrão de desenvolvimento da Trianguli, empresa onde trabalho. O lema do Django “The web framework for perfectionists with deadlines” faz muito sentido e tem auxiliado muito a Trianguli a cumprir seus deveres para com seus clientes.

Confesso que nunca gostei muito dos módulos de formulários (forms) do Django, sempre optei em fazer meu formulários na mão para adapta-los melhor ao layout e não correr riscos de ter algum resultado inesperado de layout, mas os formulários são uma mão na roda para validação e até melhorar a segurança do site. Outro dia estava realizando uma pesquisa rotineira e acabei encontrando o Uni-Form, um conjunto de CSS e JavaScript (depende do jQuery) que cria formulários de uma maneira mais elegante, incluindo sua validação. O Uni-Form é altamente personalizável e seu código está muito bem elaborado e validado via W3C. Pesquisando mais um pouco, encontrei o django-uni-form, que faz a integração do Uni-Form ao Django, permitindo seu uso rapidamente em um projeto Django existente, com poucas modificações no código. O django-uni-form pode substituir o modelo de formulários do Django e trabalhar com divs ao invés de tabelas. Com poucas alterações no CSS, é possível ter um ganho de tempo significativo em projetos Django que exigem muitos formulários.

Sua instalação e uso são bastante simples. Basta fazer o download na página do django-uni-form no GitHub e descompactar o diretório uni-form para dentro do projeto Django. Depois basta adicioná-lo no INSTALLED_APPS no settings.py (seuprojeto.uni_form) e por último copiar os arquivos que estão dentro do “media” (uni-form.css, uni-form-generic.css, uni-form.jquery.js) para seu diretório de arquivos estáticos.

Seu uso é simples, no template dos formulários basta adicionar as linhas referentes ao CSS do uni-form mais o uni-form.jquery.js (é necessário ter o jQuery) e logo no início do template incluir a tag {% load uni_form %}.

Feito isso, basta chamar seu formulário como {{ form|as_uni_form }}. Se der tudo certo, o resultado será algo como:

form

E a validação dos campos terá um resultado como o abaixo:

form2

Você pode personalizar o estilo de cores editando os arquivos CSS do uni-form.

Fica a dica!

20 Respostas para Formulários elegantes com Django

  1. Lauro César 31/08/2009 em 2:39 pm #

    Bom dia Christiano.

    Tudo bom?

    Meu nome é Lauro e assisti uma palestra sua na semanada de Sistemas de Informação (2006?) na faculdade que eu cursava em minha cidade (Frutal-MG). Gostto bastante da filosofia de programação do Python/Django, embora não tenha quase nehuma experiência como programador. Me formei em 2008 em Sistemas e sou também Engenheiro Eletricista, dito isto gostaia de lhe pedir uma luz(rs). Gostaria de gerenciar melhor meus projetos e processos da Empresa em que trabalho (na área de engenharia). Acontece que desde o orçamento até o fechamento final de uma obra, esta passa por vários processos e gerenciar isto tem se tornado cada vez mais um desafio. Pensei em usar um software Gerenciador de processos como openproj, por exemplo. Mas os softwares que vi parecem ser totalmente voltados para projetos de software o que não é meu caso. Se fossem mais flexíveis eu até poderia usar (pensei), mas os que conhecia até agora parecem mais dificultar do que ajudar meu gerenciamento. Pensei em desenvolver um software simples e com o tempo ir incrementando mais funções. Minha necessidade básica seria como que ter um checklist que eu pudesse acompanhar e visuualizar como está o andamento de cada obra, os passos tomados, o que falta, observações etc. Depois eu poderia implementar uma integração na geração de documentos, que são necessários para a análise de cada processo (obra) frente a CEMIG. O que você acha?: Conhece algum software que poderia se encaixar nesta minha necessidade? Acha que seria muito dificil o desenvolvimento de algo do tipo (digo, para mim que não tenho toda essa habilidade)? O Django serviria para isso ou é só pra desenvolvimento de sites? São dúvidas que tenho e gostaria que, na medida do possível, você me ajudasse a dirimir.

    Um abraço e obrigado.

  2. Lauro César 31/08/2009 em 12:39 pm #

    Bom dia Christiano.

    Tudo bom?

    Meu nome é Lauro e assisti uma palestra sua na semanada de Sistemas de Informação (2006?) na faculdade que eu cursava em minha cidade (Frutal-MG). Gostto bastante da filosofia de programação do Python/Django, embora não tenha quase nehuma experiência como programador. Me formei em 2008 em Sistemas e sou também Engenheiro Eletricista, dito isto gostaia de lhe pedir uma luz(rs). Gostaria de gerenciar melhor meus projetos e processos da Empresa em que trabalho (na área de engenharia). Acontece que desde o orçamento até o fechamento final de uma obra, esta passa por vários processos e gerenciar isto tem se tornado cada vez mais um desafio. Pensei em usar um software Gerenciador de processos como openproj, por exemplo. Mas os softwares que vi parecem ser totalmente voltados para projetos de software o que não é meu caso. Se fossem mais flexíveis eu até poderia usar (pensei), mas os que conhecia até agora parecem mais dificultar do que ajudar meu gerenciamento. Pensei em desenvolver um software simples e com o tempo ir incrementando mais funções. Minha necessidade básica seria como que ter um checklist que eu pudesse acompanhar e visuualizar como está o andamento de cada obra, os passos tomados, o que falta, observações etc. Depois eu poderia implementar uma integração na geração de documentos, que são necessários para a análise de cada processo (obra) frente a CEMIG. O que você acha?: Conhece algum software que poderia se encaixar nesta minha necessidade? Acha que seria muito dificil o desenvolvimento de algo do tipo (digo, para mim que não tenho toda essa habilidade)? O Django serviria para isso ou é só pra desenvolvimento de sites? São dúvidas que tenho e gostaria que, na medida do possível, você me ajudasse a dirimir.

    Um abraço e obrigado.

  3. Christiano Anderson 19/09/2009 em 10:02 pm #

    Oi Lauro,

    Obrigado pelo seu comentário. Estou entrando em contato com você via e-mail. Abraços!

  4. Christiano Anderson 19/09/2009 em 8:02 pm #

    Oi Lauro,

    Obrigado pelo seu comentário. Estou entrando em contato com você via e-mail. Abraços!

  5. Lauro César 20/09/2009 em 5:26 pm #

    Ok, obrigado.

    Fico aguardando então.

    um abraço!

  6. Lauro César 20/09/2009 em 3:26 pm #

    Ok, obrigado.

    Fico aguardando então.

    um abraço!

  7. Eduardo 21/09/2009 em 6:21 pm #

    Muito bom, gostei da solução !

  8. Eduardo 21/09/2009 em 4:21 pm #

    Muito bom, gostei da solução !

  9. Paulo 21/10/2009 em 12:20 pm #

    Olá Christiano,

    Tenho procurado, em Curitiba, empresas ou pessoas que ofereçam cursos de Python/Jango, mas sem sucesso. Você teria alguma indicação, ou sugestão? Mesmo que fossem cursos on-line, gostaria de algo mais estruturado do que os cursos gratuitos básicos que tenho encontrado na Web.
    Agradeço desde já qualquer ajuda.
    Atenciosamente.

    • Christiano Anderson 23/10/2009 em 10:27 pm #

      Olá Paulo,

      Realmente Django está sendo bastante requisitado. Vou te enviar um e-mail em PVT com algumas informações que podem ser úteis.

      Abraços

  10. Paulo 21/10/2009 em 10:20 am #

    Olá Christiano,

    Tenho procurado, em Curitiba, empresas ou pessoas que ofereçam cursos de Python/Jango, mas sem sucesso. Você teria alguma indicação, ou sugestão? Mesmo que fossem cursos on-line, gostaria de algo mais estruturado do que os cursos gratuitos básicos que tenho encontrado na Web.
    Agradeço desde já qualquer ajuda.
    Atenciosamente.

    • Christiano Anderson 23/10/2009 em 8:27 pm #

      Olá Paulo,

      Realmente Django está sendo bastante requisitado. Vou te enviar um e-mail em PVT com algumas informações que podem ser úteis.

      Abraços

  11. Sergio Luiz Nievola 27/04/2010 em 5:27 pm #

    Olá:

    Gostaria de informações de um curso do OpenProject em Curitiba, ou boas opções de um curso pela Web.

    Grato.

  12. Sergio Luiz Nievola 27/04/2010 em 3:27 pm #

    Olá:

    Gostaria de informações de um curso do OpenProject em Curitiba, ou boas opções de um curso pela Web.

    Grato.

  13. Lauro Matos 30/04/2010 em 8:49 pm #

    Prezado Christiano,

    Meu pedido é o mesmo que o do Paulo, indicação/sugestão de curso de Python/Django em Curitiba/PR.

    Atenciosamente,

    Lauro.

  14. Lauro Matos 30/04/2010 em 6:49 pm #

    Prezado Christiano,

    Meu pedido é o mesmo que o do Paulo, indicação/sugestão de curso de Python/Django em Curitiba/PR.

    Atenciosamente,

    Lauro.

  15. Sérgio Berlotto 09/02/2012 em 3:46 pm #

    Ótima dica Christiano !
    Valeu..

  16. Christin 19/05/2012 em 11:17 am #

    Ótima dica!!!

    Tem também o crisp-forms que é um fork do uni-form e o Pinax. Pena que a documentação (exemplos, tutoriais…) ainda é difícil de encontrar. Se você tiver algum poderia compartilhar com a galera.
    Vi que o site da sua empresa parece está usndo o Pinax c/ thema bootstrap, vou ficar no aguardo pra ver o resultado.
    flw…

Deixe uma resposta

Contribua com Bitcoins :-) 19SNYXo1d4Wy4isCXPZr9HtV8SR2h1Ln6v