页面页脚中的联系表
Contactform in footer of page
我在网站的页脚中有一个联系表。所以它在每一页上。它有效,但有一个问题:一旦发送,它就不再显示了。更具体地说,我想当我的请求不再为空时。
@register.inclusion_tag('home/tags/contact.html', takes_context=True)
def contact_form(context):
request = context['request']
if request.method == 'POST':
form = ContactForm(request.POST)
if form.is_valid():
subject = form.cleaned_data['naam']
from_email = form.cleaned_data['email']
message = form.cleaned_data['bericht']
messages.success(request, 'Form submission successful')
try:
send_mail(subject, message, from_email, ['myemailaddress'])
except BadHeaderError:
return HttpResponse('invalid header found')
return context
else:
form = ContactForm()
return {request: 'context.request', 'form': form}
不胜感激。
看起来您在 return 模板标签的上下文中没有 form
每当有人提交表单时。
见下文:
- 在函数结束之前不要return上下文对象,这将使事情更容易完成。
- 最好将键添加到上下文对象,这样您就不必重新添加
request
,因为它已经存在。
删除末尾的 else 分支,您希望一直发送新的(空白)表单,即使在收到响应后(通过 POST)。
@register.inclusion_tag('home/tags/contact.html', takes_context=真)
def contact_form(上下文):
请求=上下文['request']
if request.method == 'POST':
form = ContactForm(request.POST)
if form.is_valid():
subject = form.cleaned_data['naam']
from_email = form.cleaned_data['email']
message = form.cleaned_data['bericht']
messages.success(request, 'Form submission successful')
try:
send_mail(subject, message, from_email, ['myemailaddress'])
except BadHeaderError:
return HttpResponse('invalid header found')
#return context # returning here sends back the context without 'form'
# remove the else branch, you always want to return an empty form
#else:
form = ContactForm()
# return {request: 'context.request', 'form': form}
# return at a consistent place in a consistent way
# add to context, rather then recreating it
context['form'] = form
return context
另一种解决方法是重定向回联系页面所在的 URL(但是,您会丢失消息)。
我在网站的页脚中有一个联系表。所以它在每一页上。它有效,但有一个问题:一旦发送,它就不再显示了。更具体地说,我想当我的请求不再为空时。
@register.inclusion_tag('home/tags/contact.html', takes_context=True)
def contact_form(context):
request = context['request']
if request.method == 'POST':
form = ContactForm(request.POST)
if form.is_valid():
subject = form.cleaned_data['naam']
from_email = form.cleaned_data['email']
message = form.cleaned_data['bericht']
messages.success(request, 'Form submission successful')
try:
send_mail(subject, message, from_email, ['myemailaddress'])
except BadHeaderError:
return HttpResponse('invalid header found')
return context
else:
form = ContactForm()
return {request: 'context.request', 'form': form}
不胜感激。
看起来您在 return 模板标签的上下文中没有 form
每当有人提交表单时。
见下文:
- 在函数结束之前不要return上下文对象,这将使事情更容易完成。
- 最好将键添加到上下文对象,这样您就不必重新添加
request
,因为它已经存在。 删除末尾的 else 分支,您希望一直发送新的(空白)表单,即使在收到响应后(通过 POST)。
@register.inclusion_tag('home/tags/contact.html', takes_context=真) def contact_form(上下文): 请求=上下文['request']
if request.method == 'POST': form = ContactForm(request.POST) if form.is_valid(): subject = form.cleaned_data['naam'] from_email = form.cleaned_data['email'] message = form.cleaned_data['bericht'] messages.success(request, 'Form submission successful') try: send_mail(subject, message, from_email, ['myemailaddress']) except BadHeaderError: return HttpResponse('invalid header found') #return context # returning here sends back the context without 'form' # remove the else branch, you always want to return an empty form #else: form = ContactForm() # return {request: 'context.request', 'form': form} # return at a consistent place in a consistent way # add to context, rather then recreating it context['form'] = form return context
另一种解决方法是重定向回联系页面所在的 URL(但是,您会丢失消息)。