OBS: Uma versão mais atualizada desse artigo esta em http://rfdev.org/2008/02/21/formularios-no-django/
Dando continuidade ao tutorial Usando NewForms com ModelForm vou complementá-lo com as funções de excluir e alterar os registros.
Vamos começar pelo nosso “contatos.html” ele vai ser o único html que vamos usar, o “contatos_lista.html” não iremos mais usar então ele pode ser descartado.
O “contatos.html” deve ficar como a baixo:
<html>
<head>
<title>Newforms Django</title>
</head>
<body>
{% if nome %}
<p>{{ nome }} foi deletado!</p>
{% endif %}
<form action="/salvar_contato/" method="post">
<table>
{{form}}
</table>
<input type="submit" value="Adicionar/Salvar" /> - <a href="/apagar_contato/{{ codigo }}/"> Excluir</a>
</form>
{% for contatos in c %}
<a href="/contatos_resultado/{{ contatos.id }}/">{{ contatos.nome }}</a><br />
{% endfor %}
</body>
</html>
Como você pode reparar foram adicionadas algumas linhas ao nosso html, vou explicar o que cada uma faz:
{% if nome %}
<p>{{ nome }} foi excluido!</p>
{% endif %}
<p>{{ nome }} foi excluido!</p> ira ser mostrado na tela como, por exemplo, “Rafael foi excluido!” nesse caso a variável “nome” continha a string “Rafael”.<form action="/salvar_contato/" method="post">
<table>
{{form}}
</table>
<input type="submit" value="Adicionar/Salvar" /> - <a href="/apagar_contato/{{ codigo }}/"> Excluir</a>
</form>
action=”/salvar_contato/” method=”post”essa parte de código html quer dizer que a região do
<form> tem o método “post” que quer dizer que ao clicar em um botão com o tipo “submit” ele ira enviar os dados do {{ form }} para a função “salvar_contato”. Temos também um link no qual recebe o endereço da pagina mais a função e mais o código para deletar o contato selecionado.{% for contatos in c %}
<a href="/contatos_resultado/{{ contatos.id }}/">{{ contatos.nome }}</a><br />
{% endfor %}
Agora vamos para o urls.py,ele deve ficar assim:
from django.conf.urls.defaults import *urlpatterns = patterns('',
(r'^admin/', include('django.contrib.admin.urls')),
(r'^contatos/', 'tutorial.tuto1.views.contatos'),
(r'^salvar_contato/$', 'tutorial.tuto1.views.salvar_contato'),
(r'^contatos_resultado/(?P<codigo>\d+)/$', 'tutorial.tuto1.views.contatos_resultado'),
(r'^apagar_contato/(?P<codigo>\d+)/$', 'tutorial.tuto1.views.apagar_contato'),
)
def contatos(request):
c = Contatos.objects.all()
f = ContatosModelForm()
return render_to_response('contatos.html',{'form':f.as_table(), 'c':c})
def contatos_resultado(request, codigo):
c = get_object_or_404(Contatos, pk=codigo)
codigo = c.id
f = ContatosModelForm(instance=c)
c = Contatos.objects.all()
return render_to_response('contatos.html',{'form':f.as_table(), 'c':c, 'codigo':codigo})
codigo = c.id
f = ContatosModelForm(instance=c)
c = Contatos.objects.all()
return render_to_response('contatos.html',{'form':f.as_table(), 'c':c, 'codigo':codigo})
def apagar_contato(request, codigo):
c = get_object_or_404(Contatos, pk=codigo)
nome = c.nome
c.delete()
f = ContatosModelForm()
c = Contatos.objects.all()
return render_to_response('contatos.html',{'form':f.as_table(), 'nome':nome, 'c':c})
Download do fonte: contatos
Abraços!
Boa tarde,
Estou trabalhando com o django e seus artigos tem sido de grande ajuda. Teria algum material sobre como alterar formulario, pois nesse último ele altera, porém salva outro, em vez de salvar por cima.
Grata
Renata vc tem razão, estarei hj mesmo fazendo outro artigo abordando todas as 3 operações e dessa vez farei com calma pois esse artigo eu fiz nas preças e acabei nao me ligando de que ele estava adicionando ao invés de alterar, peço desculpas a todos que acompanharam esse artigo e se depararam com esse problema.
Feeds RSS
Ultimas Mensagens
Tags (categorias)
Links
Histórico