方法不允许 (POST) - 搜索

Method Not Allowed (POST) - search

任务:在 django-table 之上添加简单搜索以过滤它的值。

问题:f^tup 某处并在将值放入搜索后传递请求时出现此错误 window:

Method Not Allowed (POST): /warscrolls/
[22/Jun/2018 10:27:17] "POST /warscrolls/ HTTP/1.1" 405 0

我的url是这样的:

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>

我错过了什么?

要启用 POST 请求,您基于 class 的视图应实现 post() 方法。但是 django ListView class 默认情况下没有实现 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>