NoReverseMatch at ...... in django
Posted
技术标签:
【中文标题】NoReverseMatch 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 和提交按钮,但结果始终相同。请帮忙!
【问题讨论】:
【参考方案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' %
【讨论】:
以上是关于NoReverseMatch at ...... in django的主要内容,如果未能解决你的问题,请参考以下文章
NoReverseMatch at ...... in django
NoReverseMatch at / posts / post / 18 / comment / Django Error
Django NoReverseMatch at / 路径名和/或顺序是不是冲突?
NoReverseMatch at / Reverse for 'post_detail' 未找到
NoReverseMatch at /accounts/password-reset/ 用于 Django 中的密码重置
NoReverseMatch at / Reverse for 'singlepropa' 与参数 '('mens-shirt-1',)' 未找到。已尝试 1 种模式