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:
E a validação dos campos terá um resultado como o abaixo:
Você pode personalizar o estilo de cores editando os arquivos CSS do uni-form.
Fica a dica!