我按照Github上Wagtail Form Example的说明在Wagtail之外创建了标准的Django表单。这完美无缺,但现在有一个新问题。
在有表单的页面上,base.html中与标准页面相关的模板代码不再有效,即:
{% block title %}
{% if self.seo_title %}{{ self.seo_title }}{% else %}{{ self.title }}{% endif %}
{% endblock %}
{% block title_suffix %}
{% with self.get_site.site_name as site_name %}
{% if site_name %}| {{ site_name }}{% endif %}
{% endwith %}
{% endblock %}
我的serve()方法覆盖如下:
class MyPage(Page):
# My Code
def serve(self, request):
from .forms import MyForm
if request.method == 'POST':
form = MyForm(request.POST)
if form.is_valid():
my_data = form.save()
return render(request, 'my_other_template.html', {
'page': self,
'my_data': my_data,
})
else:
form = MyForm()
return render(request, 'my_template.html', {
'page': self,
'form': form,
})
关于出了什么问题的任何想法?
答案 0 :(得分:1)
您在模板代码中使用变量self
,但在调用self
时没有传递render
个上下文变量 - 仅page
和{{ 1}}。
不建议在模板中使用form
,因为它与某些模板引擎(如Jinja2)不兼容。您应该使用self
代替:
page
或者,如果您不想更新模板代码,可以将 {% if page.seo_title %}{{ page.seo_title }}{% else %}{{ page.title }}{% endif %}
传递给self
:
render