Django包括但不包括内容
我想使用Django包括但不包括内容,django,forms,templates,tags,include,Django,Forms,Templates,Tags,Include,我想使用{%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['yea
{%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();'}))
网址:
浏览-year.html:
<form action='' method='post' enctype='multipart/form-data'>
{{ form.as_p }}
{% csrf_token %}
</form>
{{form.as_p}}
{%csrf_令牌%}
这将呈现一个空表单(即,源代码显示包含一个表单,但它没有内容)。我错过了什么?这是我试图通过使用
{%include%}
以另一种方法解决的问题的继续。谢谢你的想法 发生这种情况是因为您正在呈现browse year.html
:
return render(request, 'browse-year.html', {'form':form, 'thing_list':thing_list})
您应该呈现另一个html,即您没有给出名称但以开头的html
{% extends 'base.html' %}
只有通过呈现其中一个,您才能扩展基础,并显示其他内容。您的
base.html
是否具有{%block content%}
?谢谢@karthikr。是的,我的base.html
有{%block content%}
。还有什么我可能遗漏的吗?谢谢你的想法如果你把browse year.html
的上下文放在browse.html
中,它能工作吗?嗯,其实并不奇怪。当我在视图中同时使用这三个表单时,这个表单就出现了,就像我在文章底部链接的另一个问题一样。我没有更改表单或其他任何内容,只是尝试设置一个不同的视图(如上所示)来处理表单,因为在一个视图中使用所有三个表单时遇到了困难。谢谢你的建议!能否将上下文传递给render
方法并查看?另外,生成的HTML是否有谢谢@J.C.,我改为返回呈现(请求,'browse.HTML',{'form':form,'thing_list':thing_list})
(browse.HTML是我的主模板),但我仍然得到一个空表单。还有什么我可能遗漏的吗?
return render(request, 'browse-year.html', {'form':form, 'thing_list':thing_list})
{% extends 'base.html' %}