任务:在Django表顶部添加简单搜索以过滤其值。
问题:在将值放入搜索窗口后传递请求时,在某处f ^ tup并得到此错误:
Method Not Allowed (POST): /warscrolls/
[22/Jun/2018 10:27:17] "POST /warscrolls/ HTTP/1.1" 405 0
我的网址是这样的:
url(r'^warscrolls/$', ScrollListView.as_view(filter_class=ScrollListFilter,
template_name='scroll_list.html'), name='warscrolls'),
我在html模板中的搜索表单如下:
<form method="post" class="form-inline form-search pull-right">
{% csrf_token %}
<div>
<input id="search_form_id" name="search" type="text" class="form-control col-md-3" placeholder="ID, Name, Account #, ZIP"{% if search %} value="{{ search }}"{% endif %}>
<button type="submit" class="btn btn-small btn-dark"><i class="fa fa-search"></i> Search</button>
</div>
</form>
我想念什么?
答案 0 :(得分:2)
要启用POST
请求,您基于类的视图应实现post()
方法。但是django ListView
类默认情况下未实现post()
方法,这会引发错误。
实际上,通常使用GET
搜索请求选项,因此,要修复错误,您可以像这样简单地更新html表单:
<form method="get" class="form-inline form-search pull-right">
<div>
<input id="search_form_id" name="search" type="text" class="form-control col-md-3" placeholder="ID, Name, Account #, ZIP"{% if search %} value="{{ search }}"{% endif %}>
<button type="submit" class="btn btn-small btn-dark"><i class="fa fa-search"></i> Search</button>
</div>
</form>