Usando o newforms do Django para gerar formulários

Postado em: Dezembro 7, 2007
Tags: django

Esse é meu primeiro tutorial, não é extenso pois estou iniciando no Django e Python, e como eu gosto de ajudar sempre que possível eu vou compartilhar a experiência que fiz com essa classe nova do django, o newforms.

Eu não vou me deter a explicar como iniciar uma aplicação nova e etc, isso já esta descrito nos tutoriais traduzidos do site da comunidade djangobrasil.org

Vamos usar essas declarações:

from django import newforms as forms
from django.shortcuts import render_to_response

Agora vamos criar a classe na qual usaremos para gerar o formulário:

class ContatosForm(forms.Form):
nome = forms.CharField(max_length=100, required=True)
endereco = forms.CharField(max_length=100, required=False)
email = forms.EmailField(required=False)
telefone = forms.CharField(max_length=100, required=True)
celular = forms.CharField(max_length=100, required=False)

Bom a gente declarou os campos, definimos o tamanho e tipo de cada um e dissemos para cada campo se ele é requerido ou não, se deixarmos um campo requerido vazio uma mensagem vai ser gerada dizendo que o campo é obrigatório e deve ser preenchido.

Agora vamos fazer a função que vai retornar o html para a pagina que vamos usar para gerar o nosso formulário:

def index(request):
data = {'nome': 'Rafael Campos de Bastiani',
'endereco': 'algum lugar',
'email': 'testando@teste.net',
'telefone': '549018283',
'celular': '549018282'}
f = ContatosForm(data)
return render_to_response('index.html', {'form': f.as_table()})

Crio uma variável “data” na qual vai conter os dados que vão aparecer nos campos do formulário. Após passo a classe ContatosForm para a variável “f” e mando os dados junto com a classe. Agora vem o retorno “render_to_response”, esse cara vai abrir o index.html e mandar para ele a nossa variável “f” na qual vai passar a se chamar “form” dentro do código html, notem que uso a opção as_table() essa opção é para gerar os campos em uma tabela html.

Vamos ao código da pagina index.html:
<html>
<head>
<title>Newforms Django</title>
</head>
<body>
<table>
{{form}}
</table>
</body>
</html>

Esse é o nosso html, notem o {{form}} entre as tags

e ali aonde o a mágica vai acontecer, o nosso formulário será criado bem ali, lembra que passamos a nossa classe para essa variável “form”? pois bem é ela que vai gerar tudo para nós.

Em breve veremos como usar o newforms com modelos e assim geraremos nossos formulários a partir dos modelos criados para armazenarmos dados.

Espero ter ajudado!

Abraços!

Referencia: http://www.djangoproject.com/documentation/newforms/



Não será divulgado!

Um site válido!

Leandro em Dezembro 8, 2007

Rafael,
Parabéns pelo artigo, excelente !.
Estou aguardando anciosamente pela continução.

Um grande abraço,
Leandro.

André Duarte em Dezembro 8, 2007

Parabéns pelo tutorial Rafael!

Tão pouco tempo usando Django e já está ajudando a comunidade.

É isso ai!!

Abraços

Lucas Max em Maio 29, 2008

Opa!
Show de bola, me ajudou 100% :D

Vale lembrar também que temos que adicionar:
from django.shortcuts import render_to_response

no topo dos views,
e também uma url ex:.
(r'^index/', 'NOMEDOPROJETO.NOMEDAAPLICACAO.views.index'),

no arquivo urls.py

certo?

eheeh
show de bola o artigo!

Abraço,

Lucas Max

Rafael (autor) em Junho 3, 2008

Vlw pelo comentario Max!
Na real o que eu mostrei eh apenas como usar o newforms, para fazer oque vc disse ai teríamos q usar o modelforms.

[]'s

Outros

Hospedagem gratuitamente cedida pela TeHospedo - Hospedagem de sites, registro de dominios, revenda de hospedagem, streaming
TeHospedo - Hospedagem de sites, registro de dominios, revenda de hospedagem, streaming

django donated

pyconbrasil

Divulgue o Nerdson

Firefox 3 - Brazil

BlogBlogs

Add to Technorati Favorites

Django
Desenvolvido com Django, Aptana, Gimp, Inkscape | Rafael Campos de Bastiani - RFDev.org - 2008