campo do model em uma view

2 views
Skip to first unread message

Edgard

unread,
Nov 10, 2009, 12:38:23 PM11/10/09
to Django Brasil
Boa tarde,
escrevi uma view que cadastra os dados do form e dispara um e-mail
para mim mesmo. Essa, abaixo:

@login_required
def publicar(request):
if request.method == 'POST':
form = FormPublicar(request.POST)
if form.is_valid():
form.save()
assunto = "assunto"
mensagem = "um campo do model" [ 1 ]
destinatario = 'outro campo do model: e-mail do
destinatario' [ 2 ]
mail = EmailMessage(assunto, mensagem,
'em...@dominio.com.br', [destinatario])
try:
mail.send()
except: 'Erro durante o Envio'
pass
exibir = 'Publicado - Aguarde alguns minutos' [ 3 ]

else:
form = FormPublicar()
return render_to_response('publicar.html', {'form': form})

[ 1 ] como adiciono um campo do model para que a mensagem, seja
enviada para [ 2 ].
[ 3 ] gostaria de mostrar uma mensagem para avisar que foi cadastrado
e fazer um {% if exibir %}{{ exibir }}{% endif %}

Alguém pode ajudar, o forma cadastra os dados e envia o e-mail
tranquilamente, mas gostaria de mudar o envio.
[]'s

Fred Chevitarese

unread,
Nov 10, 2009, 1:32:21 PM11/10/09
to django...@googlegroups.com
Olha só... eu crio geralmente as rotinas de salvamento e envio de emails desta forma...

http://dpaste.com/hold/118760/

Da uma olhada ai...
Quanto a mensagem... Você coloca no seu template
{% if mensagem %}
    {{mensagem}}
{% endif %}

Abraços!

http://chevitarese.wordpress.com
Fred Chevitarese - GNU/Linux


2009/11/10 Edgard <eap...@gmail.com>

Edgard

unread,
Nov 15, 2009, 3:40:33 PM11/15/09
to Django Brasil
Não ta rolando.
parte do views.py -- os outros imports estão referenciados,nao
coloquei tudo pq fica muito grande

from django.core.paginator import Paginator
from django.contrib.auth.decorators import login_required
@login_required

#envia e-mail da publicao
def enviar(self):
titulo = u'Publicacao '
destino = self.cleaned_data['email2']#Pegando o email preenchido
no form...
mensagem = u"""
Olá, seu amigo(a) de nome
Nome: %(nome)s
usuario do e-mail:
E-mail: %(email)s
publicou a seguinte mensagem:
Mensagem: %(mensagem)s
""" % self.cleaned_data

send_mail(
subject = titulo,
message = mensagem,
from_email = 'eric...@gmail.com',
recipient_list = [destino],
)


def publicando(request):
if request.method == 'POST':
form = FormPublicar(request.POST)
if form.is_valid():
form.save()
form.enviar()

mostrar = "Publicação enviada com sucesso. Aguarde alguns
instantes!"
form = FormPublicar()

return render_to_response(
'publicar.html',
locals(),
context_instance=RequestContext(request),
)

else:

return render_to_response(
'publicar.html',
locals(),
context_instance=RequestContext(request),
)
> > []'s- Ocultar texto das mensagens anteriores -
>
> - Mostrar texto das mensagens anteriores -

Edgard

unread,
Nov 15, 2009, 3:51:10 PM11/15/09
to Django Brasil
Ooops
Diz que o FormPublicar nao possui o atributo 'enviar'.
'FormPublicar' object has no attribute 'enviar'

On 10 nov, 16:32, Fred Chevitarese <fchevitar...@gmail.com> wrote:

George Ribeiro

unread,
Nov 15, 2009, 4:08:23 PM11/15/09
to django...@googlegroups.com
Coloque a sua views.py e os seus forms.py no dpaste e poste os links para que possamos ajudá-lo.

--
George Ribeiro
Desenvolvedor Web Python/Django
Coordenador de Projetos - Empresa Júnior Computação
Sobral/CE

Fred Chevitarese

unread,
Nov 15, 2009, 4:38:14 PM11/15/09
to django...@googlegroups.com
é.... Se não colocá-los fica difícil identificar onde está o problema ...


http://chevitarese.wordpress.com
Fred Chevitarese - GNU/Linux


2009/11/15 George Ribeiro <georg...@gmail.com>

Edgard

unread,
Nov 15, 2009, 9:21:47 PM11/15/09
to Django Brasil
Está aqui:

http://dpaste.com/hold/120938/


[]'s e boa semana

On 15 nov, 19:38, Fred Chevitarese <fchevitar...@gmail.com> wrote:
> é.... Se não colocá-los fica difícil identificar onde está o problema ...
>
> http://chevitarese.wordpress.com
> Fred Chevitarese - GNU/Linux
>
> 2009/11/15 George Ribeiro <george....@gmail.com>
>
>
>
> > Coloque a sua views.py e os seus forms.py no dpaste e poste os links para
> > que possamos ajudá-lo.
>
> > --
> > George Ribeiro
> > Desenvolvedor Web Python/Django
> > Coordenador de Projetos - Empresa Júnior Computação
> > Sobral/CE- Ocultar texto das mensagens anteriores -

George Ribeiro

unread,
Nov 15, 2009, 10:08:14 PM11/15/09
to django...@googlegroups.com
Edgar,

   O método enviar está solto na view, coloque ele dentro da classe FormPublicar.
Deve funcionar.

Espero ter ajudado.

2009/11/15 Edgard <eap...@gmail.com>

Edgard

unread,
Nov 15, 2009, 11:16:35 PM11/15/09
to Django Brasil
ua que novela, não consegui embuti-lo

George Ribeiro

unread,
Nov 16, 2009, 6:37:55 AM11/16/09
to django...@googlegroups.com

Edgard

unread,
Nov 16, 2009, 6:59:21 AM11/16/09
to Django Brasil
Oi George,
já li, reli e uso como base o site do marinho.

A questão é que o quero fazer é bem diferente.

On 16 nov, 09:37, George Ribeiro <george....@gmail.com> wrote:
> te recomendo ler esse texto:
>
> http://www.aprendendodjango.com/permitindo-contato-do-outro-lado-do-u...

George Ribeiro

unread,
Nov 16, 2009, 7:11:44 AM11/16/09
to django...@googlegroups.com
Edgar, coloque no dpaste o seu arquivo forms.py também e, se possivel, o models.py para que possa ficar mais fácil a gente te ajudar.

2009/11/16 Edgard <eap...@gmail.com>
Sobral/CE

Diógenes A. Fernandes Hermínio

unread,
Nov 16, 2009, 7:30:00 AM11/16/09
to Django Brasil


On 16 nov, 08:59, Edgard <eap...@gmail.com> wrote:
> Oi George,
> já li, reli e uso como base o site do marinho.
>
> A questão é que o quero fazer é bem diferente.
>

O que você quer fazer exatamente?
Bom, vi seu código, e vi que realmente o método enviar está "solto".

Presta atenção nessas linhas:
def publicando(request):
if request.method == 'POST':
form = FormPublicar(request.POST)

if form.is_valid():
form.save()
form.enviar()

Você percebeu que form.enviar() é uma chamada a um método da classe
FormPublicar? Logo o seu método enviar precisa estar dentro da classe
FormPublicar. Por exemplo:
class FormPublicar(forms.Form):
#definição dos campos
def enviar():
#descrição do método

Qualquer dúvida, dá uma olhada na documentação dos forms [1] no site
do djangoproject, que lá explica tudo direitinho.

[1] http://docs.djangoproject.com/en/dev/#forms

[]'s

Edgard

unread,
Nov 16, 2009, 8:31:37 AM11/16/09
to Django Brasil
Desculpe a minha burrice, mas o django parace q tem algumas coisas
mágicas "pulos do gato"

Emprestimo é uma class do models, que é usada como ModelForm no
forms.py
Então me ocorre o seguinte:

Se o ModelForm serve para que eu nao tenha que escrever o form
novamente, pq eu o faria na view?
Se eu o fizer na view como é o caso do form de contato http://www.aprendendodjango.com
eu nao consigo utilizar o metodo save(), correto?

O que o Diógenes está sugerindo é que faça todo o form na minha view
novamente.

não sei se estou pirando, mas o que nao consigo fazer deve ser
relativamente simples, eu empaquei.

Mas é:
utilizar a classe "Emprestimo" do meu model no forms.py, pegar alguns
campos depois que o mesmo foi submetido e enviar por e-mail?
é loucura o que quero fazer? To doido, to doido.



On 16 nov, 10:30, Diógenes A. Fernandes Hermínio <diofe...@gmail.com>
wrote:

George Ribeiro

unread,
Nov 16, 2009, 9:16:04 AM11/16/09
to django...@googlegroups.com
Tente fazer dessa forma:
Se precisar faça algumas modificações.
 
No começo é assim mesmo Edgard. Mas depois que a gente se acostuma e pega o jeito
essas coisas ficam automáticas. Espero que possa ter ajudado.

Diógenes A. Fernandes Hermínio

unread,
Nov 17, 2009, 7:15:29 AM11/17/09
to Django Brasil
> O que o Diógenes está sugerindo é que faça todo o form na minha view
> novamente.

Não, não era isso que eu estava sugerindo. A view continua do mesmo
jeito que estava, era só o método que deveria estar dentro da classe
FormPublicar, entendeu?
Mas o código que o George recomendou pode ser bem útil para você.

[]'s
Reply all
Reply to author
Forward
0 new messages