私はサイトのフッターエリアにニュースレターのサインアップフォームを追加しました。ビューにバインドできなかったためinclusion_tagを使用する必要がありました。それはうまく機能し、予想通り、私は、私は明らかに自分自身を把握するために十分にスマートではないだということが起こって奇妙なことがあります:)フォーム送信後にDjangoフォームに変数エラーが見つからない
フォームが送信された後、私は確認メールを受け取ったが、二つのことが起こる:
- Django Success Messageは、ページを手動で更新するまで表示されません。
- 私のフォームが座っている場所には、構文 'Missing Variable'というエラーがあります。私は参照のためのスクリーンショットを含み、私のフォームコードは以下の通りです。フォームフィールドが再び表示され、ページを再度リフレッシュした後にエラーが消えます。
<form action='' method='POST' role='form' class="form-inline"> {% csrf_token %} <div class="form-group"> {{ form.mailing_list_full_name }} </div> <div class="form-group"> {{ form.mailing_list_phone }} </div> <div class="form-group"> {{ form.mailing_list_email }} </div> <button class="button button-lg button-square button-pasific hover-ripple-out" type='submit'>Subscribe</button> </form>
footer_newsletter_signup.html
home_tags.py
@register.inclusion_tag('pages/tags/footer_newsletter_signup.html', takes_context=True)
def footer_newsletter_signup(context):
request = context['request']
title = 'Newsletter Signup'
form = MailingListForm(request.POST or None)
if form.is_valid():
mailing_list_full_name = form.cleaned_data.get('mailing_list_full_name')
mailing_list_phone = form.cleaned_data.get('mailing_list_phone')
mailing_list_email = form.cleaned_data.get('mailing_list_email')
mailing_list_subject = 'Submission from Newsletter Signup'
mailing_list_message = 'Yes, please add me to marketing emails.'
from_email = settings.DEFAULT_FROM_EMAIL
recipient_list = [from_email, '[email protected]']
ctx = {
'mailing_list_subject': mailing_list_subject,
'mailing_list_full_name': mailing_list_full_name,
'mailing_list_email': mailing_list_email,
'mailing_list_phone': mailing_list_phone,
'mailing_list_message': mailing_list_message
}
message = get_template('pages/newsletter_signup_email.html').render(Context(ctx))
msg = EmailMessage(mailing_list_subject, message, to=recipient_list, from_email=from_email)
msg.content_subtype = 'html'
msg.send()
messages.success(request, "Thank you, you've been added to our list.")
return HttpResponse('/')
context = {
'form': form,
'title': title,
}
return context
その後、私は同じように私のテンプレートにタグを追加します。
{% footer_newsletter_signup %}
なぜあなたは処理しているが動作しない私ですか? –
@SardorbekImomalievあなたが何を求めているのかはっきりしていませんが、元の質問に自分のフォームを追加しました。 –
'form = MailingListForm(request.POSTまたはNone)if form.is_valid():...'このコードは、タグではなく、表示されている必要があります。 –