我在一个博客网站上工作,在那里你可以使用关键字(基本上是一个普通的搜索栏)搜索帖子。
我已经从django.db.models导入了Q
我创建的视图:
def search(request):
queryset = Article.objects.all()
query = request.GET.get('q')
if query:
queryset = queryset.filter(
Q(title__icontains=query) |
Q(overview__icontains=query)
).distinct()
context = {
'queryset': queryset,
}
return render(request, 'search_results.html', context)urlpattern:
path('search/', search, name='search-results'),表单本身:
<form action="{% url 'search' %}" class="search-form">{% csrf_token %}
<button type="submit" class="submit"><i class="icon-search"></i></button>
<div class="form-group">
<span class="icon icon-search"></span>
<input type="text" class="form-control" name="q" placeholder="Type a keyword and hit enter">
</div>
</form>当我想访问我放入此表单的页面时,它会显示: Reverse for 'search‘not found。“‘search”不是有效的视图函数或模式名称。
下面还显示了以下内容:
1 <!DOCTYPE html>
2 <html lang="en">
3
4 {% include 'head.html' %}
5
6 <body>
7
8 {% include 'header.html' %}
9
10 {% block content %}我尝试添加/删除csrf_token和submit按钮,但结果总是相同的。请帮帮我!
发布于 2020-02-17 19:06:58
我假设表单是head.html的一部分。您不需要csrf_token,因为它不是post表单。
在urlpatterns中,将url条目更改为:
path('search/', views.search, name='search'),在模板中,action="{% url 'search' %}"指的是url的名称...您还可以将role='search'属性添加到表单。希望能有所帮助
发布于 2020-02-17 19:08:34
当您使用{% url '' %}标记时,它会尝试根据url名称查找url。您必须在其中使用url名称。请使用{% url 'search-results' %}更改{% url 'search' %}
https://stackoverflow.com/questions/60260931
复制相似问题