我的forms.py是这样的:
class SearchForm(forms.Form):
query = forms.CharField(
label='Enter a keyword to search for',
widget=forms.TextInput(attrs={'size': 32})
)
和我的views.py是这样的:
if request.GET.has_key('query'):
query = request.GET['query'].strip() #remove white spaces
if query: #if the query still exists with no white spaces
form = SearchForm({'query' : query})
search_results = Bookmark.objects.filter(title__icontains=query)
variables = {
'form':form,
'search_results':search_results,
}
return render(request, 'home_page.html', variables)
正如你所看到的,我不是那么平常的
form = SearchForm(request.GET)
我在做
form = SearchForm({'query' : query})
这是我的模板:
<form id="search-form" method="get" action=".">
<p>{{ form.query }}</p>
<input type="submit" value="search" />
</form>
并且没有显示标签。当我替换
<p>{{ form.query }}</p>
带
<p>{{ form.as_p }}</p>
它正确显示标签。知道为什么它不起作用
<p>{{ form.query }}</p>
?可能是因为我在做
form = SearchForm({'query' : query})
在我看来?
答案 0 :(得分:1)
当您只显示单个字段时,需要显示标签。 {{ form.query }}
只显示输入。使用{{ form.query.label_tag }}
作为标签。像这样:
<p>{{ form.query.label_tag }} {{ form.query }}</p>