不允许的方法(POST)-搜索

时间:2018-06-22 08:37:22

标签: django django-views django-filter django-tables2

任务:在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>

我想念什么?

1 个答案:

答案 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>