Добавьте строку темы в django-contact-форму - PullRequest
1 голос
/ 07 ноября 2011

Я пытался добавить строку темы в Django-Contact-Form (https://bitbucket.org/ubernostrum/django-contact-form/overview),, но мне не повезло. Модуль по умолчанию настроен на чтение темы из текстового файла, но я хочупользователь, чтобы иметь возможность записать его в форму. Вот что я редактирую в forms.py:

        def __init__(self, data=None, files=None, request=None, *args, **kwargs):
        if request is None:
            raise TypeError("Keyword argument 'request' must be supplied")
        super(ContactForm, self).__init__(data=data, files=files, *args, **kwargs)
        self.request = request

        name = forms.CharField(max_length=100,
                       widget=forms.TextInput(attrs=attrs_dict),
                       label=u'Name')
        email = forms.EmailField(widget=forms.TextInput(attrs=dict(attrs_dict,
                                                           maxlength=200)),label=u'Email')
        subject = forms.CharField(max_length=100,
                       widget=forms.TextInput(attrs=attrs_dict),
                       label=u'Subject')
        body = forms.CharField(widget=forms.Textarea(attrs=attrs_dict),
                          label=u'Message')

        from_email = settings.DEFAULT_FROM_EMAIL

        recipient_list = [mail_tuple[1] for mail_tuple in settings.MANAGERS]

       # subject_template_name = "contact_form/contact_form_subject.txt"

        template_name = 'contact_form/contact_form.txt'

        _context = None

        def message(self):
        """
        Renders the body of the message to a string.

        """
        if callable(self.template_name):
            template_name = self.template_name()
        else:
            template_name = self.template_name
        return loader.render_to_string(template_name,
                                   self.get_context())

        def subject(self):
        """
           Renders the subject of the message to a string.

        """
                                                     maxlength=200)),label=u'Email')

        return self.subject

1 Ответ

0 голосов
/ 07 ноября 2011

Считывая код здесь , текстовый файл (contact_form / contact_form_subject.txt) не просто читается, он отображается как шаблон и затем вставляется в результат.Шаблону темы передается полный контекст:

    By default, this context includes:

    * All of the validated values in the form, as variables of the
      same names as their fields.

    * The current ``Site`` object, as the variable ``site``.

    * Any additional variables added by context processors (this
      will be a ``RequestContext``).

Вы можете очень легко ссылаться на значение формы в шаблоне темы, сделав шаблон чем-то вроде {{subject}} (если поле формыназванный "предмет").

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