django-contact-form: как использовать электронную почту отправителя формы как from_email - PullRequest
1 голос
/ 19 июля 2011

Использование Джанго контакт-форма , я переопределить класс формы:

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>'

Это работает, но я хочу FROM_EMAIL быть, что название и адрес электронной почты, представленным в самой форме. Пробовал со ссылкой на «self.email» в форме, но жалуется, что сам не определен. Похоже, она должна быть простой, но я не могу сказать, из документации, как решить эту проблему.

Спасибо.

1 Ответ

2 голосов
/ 19 июля 2011

Хорошо, я взглянул на класс ContactForm.Самый простой способ установить from_email для электронной почты, отправленной в форме, - переопределить 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

Надеюсь, что это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...