簡體   English   中英

NoReverseMatch at ...... in Django

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM