【发布时间】:2013-07-08 18:05:33
【问题描述】:
我想使用{% 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(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 %}
浏览年份.html:
<form action='' method='post' enctype='multipart/form-data'>
{{ form.as_p }}
{% csrf_token %}
</form>
这会呈现一个空表单(即源显示正在包含一个表单,但它没有内容)。我在这里想念什么?这是this question 的延续,我正在尝试使用{% include %} 以不同的方法解决它。感谢您的想法!
【问题讨论】:
-
你的
base.html有{% block content %}吗? -
谢谢@karthikr。是的,我的
base.html有{% block content %}。还有什么我可能在这里遗漏的吗?感谢您的想法 -
如果你将
browse-year.html的上下文内联在browse.html中,它会起作用吗? -
嗯,其实并不奇怪。当我在视图中同时使用所有三种表单时,该表单出现在之前,就像我在帖子底部链接的另一个问题一样。我没有更改表单或其他任何内容,只是尝试设置不同的视图(如上所示)来处理表单,因为我很难在一个视图中使用所有三个表单。感谢您的任何想法!
-
你能把上下文传递给
render方法看看吗?另外,生成的 HTML 是否有<form节点?
标签: django forms templates tags include