Muy buenas a todos, estoy intentando implementar un sencillo ContactForm
en mi pagina de práctica, en principio la lógica del código del que dispongo hasta el momento me está funcionando perfectamente, el formulario envía el correo a una dirección de email que he designado.
Para esto me estoy valiendo de un "template" que respeta las variables de mi formulario de esta forma:
Como pueden observar al final de mi clase ContactView
adicioné el solicitado codigo para manipular el header
del correo al ser recibido y poder ver el correo del remitente allí:
headers={'Reply-to': contact_email}
El problema es que la variable contact_email
no me la reconoce, definitivamente mi falencia radica en que presuntamemte nunca la he declarado.
Que debería cambiar en mi codigo para poder mencionar esta referencia correctamente; anteriormente mi codigo lucía de esta forma, lo unico que intento es hacer que la app luzca lo menos redundante posible =S.
De antemano agradezco cualquier sugerencia.
Un saludo.
Respuestas
La nueva versión del views.py
es mucho más limpia y concisa, pero eso no quita para que debas obtener la variable contact_email
de alguna manera antes de utilizarla. Así que como mínimo tendrás que usar lo siguiente:
class ContactView(FormView): form_class = ContactForm template_name = 'contact/contact.html' success_url = '/' def form_valid(self, form): template = get_template('contact/contact_template.txt') context_dict = form.cleaned_data context_dict['form_content'] = form.cleaned_data['content'] context = Context(context_dict) content = template.render(context) email = EmailMessage( "New contact form submission", content, "www.prueba.com" + '<[email protected]>', ['[email protected]'], headers={'Reply-to': context_dict['contact_email']} ) email.send() return super(ContactView, self).form_valid(form)
Si no te gusta context_dict['contact_email']
, tendrás que usar form.cleaned_data['contact_email']
.
@javiereguiluz
En efecto se trataba de ese método de obtención, agradezco tu ayuda amigo!
@AlexDamas