我想使用{% include %}
在页面上包含第二个表单,但表单是空的。
views.py:
def year_form(request):
thing_list = Thing.objects.all()
if request.method == 'POST':
form = YearBrowseForm(request.POST)
if form.is_valid():
year = form.cleaned_data['year']
return HttpResponseRedirect(reverse('browse_years', kwargs={'year':year}))
else:
form = YearBrowseForm()
return render(request, 'browse-year.html', {'form':form, 'thing_list':thing_list})
forms.py:
class YearBrowseForm(forms.Form):
year = forms.ChoiceField(choices=YEARS_EMPTY, widget=forms.Select(attrs={'onchange': 'this.form.submit();'}))
url:
url(r'^browse/years/(?P<year>\d+)/$', 'my_app.views.browse.year_form', name='browse_years'),
HTML:
{% extends 'base.html' %}
{% block content %}
{% include 'browse-year.html' %}
{% endblock %}
浏览-year.html:
<form action='' method='post' enctype='multipart/form-data'>
{{ form.as_p }}
{% csrf_token %}
</form>
这会呈现一个空表单(即源表明正在包含表单,但它没有内容)。我在这里错过了什么?这是this question的延续,我试图通过使用{% include %}
以不同的方法解决这个问题。谢谢你的想法!
答案 0 :(得分:0)
这是因为您正在渲染browse-year.html
:
return render(request, 'browse-year.html', {'form':form, 'thing_list':thing_list})
你应该渲染另一个html,一个你没有给出名字的html,但是以
开头{% extends 'base.html' %}
只能通过渲染你扩展基础的那个,然后出现其他内容。