Django没有显示表单标签

时间:2014-02-03 02:46:58

标签: django django-models django-forms django-templates django-views

我的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})

在我看来?

1 个答案:

答案 0 :(得分:1)

当您只显示单个字段时,需要显示标签。 {{ form.query }}只显示输入。使用{{ form.query.label_tag }}作为标签。像这样:

<p>{{ form.query.label_tag }} {{ form.query }}</p>