Python 3.x 在wagtail页面中使用django表单时,如何处理request.method==';邮政';?
当用户提交表单时,我无法处理请求 我正在HomePage类中的get_context()方法中呈现我的表单:Python 3.x 在wagtail页面中使用django表单时,如何处理request.method==';邮政';?,python-3.x,django-forms,wagtail,Python 3.x,Django Forms,Wagtail,当用户提交表单时,我无法处理请求 我正在HomePage类中的get_context()方法中呈现我的表单: def get_context(self, request): context = super(HomePage, self).get_context(request) from .forms import RosaleaContactForm if request.method == 'POST': form = RosaleaContactF
def get_context(self, request):
context = super(HomePage, self).get_context(request)
from .forms import RosaleaContactForm
if request.method == 'POST':
form = RosaleaContactForm(request.POST)
if form.is_valid():
subject = request.POST['subject']
name = request.POST['from_name']
message = request.POST['message']
to_email = request.POST['from_email']
from_phone = request.POST['from_phone']
send_mail(
subject,
name,
message,
from_email,
[to_email],
fail_silently=False,
)
form = form
else:
form = RosaleaContactForm()
context['form'] = form
return context
表单在页面中呈现,我使用的是crispy表单和re_captcha,但在提交表单时我无法处理请求
如果我想将表单放在单独的页面上,我使用的是serve方法,但serve会覆盖所有内容,我无法使用我的主页模板。您应该覆盖页面的
serve
方法。这是Wagtail中与Django的视图函数最接近的等效函数,因为它允许您根据表单处理的结果返回任何您喜欢的HTTP响应——要么呈现模板(最容易使用Django的Django.shortcuts.render
helper),要么重定向
有关将Django表单实现为Wagtail页面的工作示例,请参见。来自gasman的回答:
它起作用了
def serve(self, request):
from flavours.forms import FlavourSuggestionForm
if request.method == 'POST':
form = FlavourSuggestionForm(request.POST)
if form.is_valid():
flavour = form.save()
return render(request, 'flavours/thankyou.html', {
'page': self,
'flavour': flavour,
})
else:
form = FlavourSuggestionForm()
return render(request, 'flavours/suggest.html', {
'page': self,
'form': form,
})