django联系人表单:如何使用表单提交者&x27;s电子邮件作为发件人电子邮件

django联系人表单:如何使用表单提交者&x27;s电子邮件作为发件人电子邮件,django,Django,使用,我已重写form类: from contact_form.forms import ContactForm from django.conf import settings class ContactFormPublic(ContactForm): tuples = settings.WORKSHOP_ADMINS recipient_list = [mail_tuple[1] for mail_tuple in tuples] from_email = 'Jo

使用,我已重写form类:

from contact_form.forms import ContactForm
from django.conf import settings

class ContactFormPublic(ContactForm):

    tuples = settings.WORKSHOP_ADMINS
    recipient_list = [mail_tuple[1] for mail_tuple in tuples]
    from_email = 'Joe Jones <joe@jones.org>'
从联系人表单导入联系人表单
从django.conf导入设置
类别ContactFormPublic(ContactForm):
元组=settings.WORKSHOP\u管理员
收件人\u列表=[mail\u tuple[1]用于邮件\u tuple in tuple]
from_email='Joe Jones'
这是可行的,但我希望from_电子邮件是表单本身中提交的姓名和电子邮件。尝试在表单中引用“self.email”,但它抱怨self没有定义。看起来应该很简单,但我无法从文档中看出如何解决这个问题


谢谢。

好的,我看了一下ContactForm类。我能看到的将from_电子邮件设置为表单中提交的电子邮件的最简单方法是覆盖ContactForm。get_messge_dict:

from contact_form.forms import ContactForm
from django.conf import settings

class ContactFormPublic(ContactForm):

    tuples = settings.WORKSHOP_ADMINS
    recipient_list = [mail_tuple[1] for mail_tuple in tuples]

    def get_message_dict(self):
        if not self.is_valid():
            raise ValueError("Message cannot be sent from invalid contact form")
        message_dict = {}

        """
        I removed 'from_email' from the message_part tuple check and updated the
        message_dict, setting the 'from_email' to the value of self.email
        """
        for message_part in ('message', 'recipient_list', 'subject'):
            attr = getattr(self, message_part)
            message_dict[message_part] = callable(attr) and attr() or attr
        message_dict.update({'from_email' : getattr(self, 'email')})

        return message_dict

希望这能帮到你。

嗨。你能发布你的联系人表单类和你的观点吗?Brandon-同样,我使用的是django联系人表单。因此,我没有自定义视图,我正在对提供的表单进行子类化。当然,我们的目标是在不改变django联系人表单的情况下扩展它(据称它非常擅长,尽管文档没有明确说明如何进行)。非常感谢Brandon!非常感谢。我做了一个调整,所以它生成了一个完整名称的回复:full_email=self.request.POST['name']+''message_dict.update({'from_email':full_email})