【问题标题】:NoReverseMatch at ...... in djangoNoReverseMatch at ...... in django
【发布时间】:2020-06-01 07:05:56
【问题描述】:

我正在开发一个博客网站,您可以在其中使用关键字搜索(基本上是普通的搜索栏)来搜索帖子。

我已经从 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)

url 模式:

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 和提交按钮,但结果始终相同。请帮忙!

【问题讨论】:

    标签: python html django django-queryset django-q


    【解决方案1】:

    我假设表单是head.html 的一部分。您不需要csrf_token,因为它不是post 表单。

    urlpatterns 中,将您的 url 条目更改为:

    path('search/', views.search, name='search'),
    

    在模板中,action="{% url 'search' %}" 指的是 url 的名称……您也可以在表单中添加 role='search' 属性。希望对你有帮助

    【讨论】:

      【解决方案2】:

      当您使用{% url '' %} 标签时,它会尝试根据 url 名称查找 url。您必须在其中使用 url 名称。请将{% url 'search' %}改为{% url 'search-results' %}

      【讨论】:

        猜你喜欢
        • 2020-02-28
        • 2014-12-22
        • 2017-08-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-01
        • 1970-01-01
        相关资源
        最近更新 更多