[英]NoReverseMatch at ...... in django
我正在一個博客網站上工作,您可以在其中使用關鍵字搜索(基本上是一個普通的搜索欄)來搜索帖子。
我從 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)
網址模式:
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>
當我想訪問我放入此表單的頁面時,它說:找不到“搜索”反向。 “搜索”不是有效的視圖函數或模式名稱。
下面還顯示了這一點:
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 和提交按鈕,但結果始終相同。 請幫忙!
我假設表單是head.html
的一部分。 您不需要csrf_token
因為它不是post
形式。
在urlpatterns
,將您的 url 條目更改為:
path('search/', views.search, name='search'),
在模板中, action="{% url 'search' %}"
指的是 url 的名稱……您還可以將role='search'
屬性添加到表單中。 希望能幫助到你
當您使用{% url '' %}
標簽時,它會嘗試根據 url 名稱查找 url。 您必須在其中使用 url 名稱。 請將{% url 'search' %}
更改為{% url 'search-results' %}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.