2

我有一个模型类。

class Search(forms.Form):
    query=forms.CharField()

并且,一个视图功能。

def search(request):
  c = {}
  c.update(csrf(request))
  if request.method == 'POST': 
    form = Search(request.POST) 
      if form.is_valid():
        search_query=form.cleaned_data['query']
            return HttpResponse("your query: %s" %search_query  , c) 
      else:
        return HttpResponse(form , c)
  else:
    return render_to_response('polls/search.html', c)

而且,这是我的 search.html:

 <form action="/polls/search" method="post">{% csrf_token %}
  <p><label for="query_label">query:</label>
    <input type="text" name="query_txt" id="query_txt_id" /></p>
  <input type="submit" value="Submit" />
 </form>

在输入一些字符后,它总是以纯文本形式显示以下内容(不是错误)。

“发生服务器错误。请联系管理员。”

4

1 回答 1

1

您的id查询字段不正确。Django 期望它是id_query.

您不需要对表单输入进行硬编码。如果您包含{{ form.as_p }}在模板中,Django 将正确呈现表单

<form action="/polls/search" method="post">{% csrf_token %}
  {{ form.as_p }}
  <input type="submit" value="Submit" />
</form>

如果您真的想在模板中对表单进行硬编码,请从 Django 生成的工作 html 开始,然后从那里自定义它。请注意,模板中的表单和下面的代码段不会显示错误。有关更多详细信息,请参阅有关自定义表单模板的文档。

<form action="/polls/search" method="post">{% csrf_token %}
  <p><label for="id_query">Query:</label> <input type="text" name="query" id="id_query" /></p>
  <input type="submit" value="Submit" />
</form>
于 2012-11-06T10:57:21.063 回答