2011-07-18 3 views
1

として、フォームの送信者の電子メールを使用するには、私は、フォームクラスオーバーライドされています:ジャンゴ - コンタクトフォーム:どのように<a href="https://bitbucket.org/ubernostrum/django-contact-form/" rel="nofollow">django-contact-form</a>を使用してFROM_EMAIL

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 <[email protected]>' 

動作しますが、私はFROM_EMAILは、名前のものになりたいと電子メールはフォーム自体で送信されます。形式で "self.email"を参照しようとしましたが、自己が定義されていないと文句を言います。シンプルであるように思えますが、ドキュメントからこれを解決する方法を教えることはできません。

ありがとうございました。

+0

こんにちは。 ContactFormクラスとビューを投稿してください。 – Brandon

+0

Brandon - 再び、私はdjango-contact-formを使用しています。だから私はカスタムビューを持っていない、私は提供されたフォームをサブクラス化しています。もちろん、目標を変更することなくdjango-contact-formを拡張することが目的です(これは非常に上手であると言われていますが、文書ではどうやってそれをどうやって行うか明確にしていません)。 – shacker

+0

さて、私はそれを見てみましょう。 – Brandon

答えて

2

私は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 

あなたを役に立てば幸い。

+0

多くのおかげでBrandon!とても有難い。私はちょっとした調整をして完全な名前をそのまま返信する: full_email = self.request.POST ['name'] + '<' + self.request.POST ['email'] + '> ' message_dict.update({' from_email ':full_email}) – shacker

+0

ようこそ。お役に立てて嬉しいです。 – Brandon

関連する問題

 関連する問題