django 基本搜索功能说 NoReverseMatch
django basic search function saying NoReverseMatch
我正在尝试按照本教程制作一个待办应用程序,如果我搜索某些内容,它会说 NoReverseMatch at /todoapp/ with Reverse for 'search' not found。 'search' 不是有效的视图函数或模式名称。
这是我的 views.py
def searchtodolist(request):
if request.method == 'GET':
query = request.GET.get('content', None)
if query:
results = Todoitem.objects.filter(content__contains=query)
return render(request, 'todoapp.html', {"results": results})
return render(request, 'todoapp.html')
这是 urls.py
urlpatterns = [
# path('url path, views.py function names)
# ex. 127.0.0.1:8000/admin/
path('addTodo/', addTodo),
path('admin/', admin.site.urls),
path('deleteTodo/<int:todo_id>/', deleteTodo),
path('search/', searchtodolist),
]
最后是我的 todoapp.html
<body>
<br>
<form action="{% url 'search' %}" method="get">{%csrf_token%}
<input type="text" name="content" placeholder="Search a todolist" class="form-control">
<input type="submit" name="submit" value="Search"/>
</form>
<table>
<tr>
<th colspan="2">List of Todos</th>
</tr>
{% for result in results %}
<tr>
<td>{{result.content}}</td>
<td><form action="/deleteTodo/{{todo_items.id}}/" style="display: inline; " method="post">
{%csrf_token%}
<input class="button button1" type="submit" value="Delete"/>
</form></td>
</tr>
{% endfor %}
</tr>
</table>
</body>
你应该给 url 一个名字,以便能够用它的名字反转它
所以使用
path('search/', searchtodolist, name="search")
这为您的 /search/ url 提供了一个名为“搜索”的名称。然后您可以通过 {% url 'search' %}
访问此 url
请注意,如果您在 urls.py 中声明了 app_name
,则应在 url 地址名称中指定
假设urls.py某事像:
app_name = "test_app"
urlpatterns = [
...
]
那么你应该使用{% url 'test_app:search' %}
我正在尝试按照本教程制作一个待办应用程序,如果我搜索某些内容,它会说 NoReverseMatch at /todoapp/ with Reverse for 'search' not found。 'search' 不是有效的视图函数或模式名称。
这是我的 views.py
def searchtodolist(request):
if request.method == 'GET':
query = request.GET.get('content', None)
if query:
results = Todoitem.objects.filter(content__contains=query)
return render(request, 'todoapp.html', {"results": results})
return render(request, 'todoapp.html')
这是 urls.py
urlpatterns = [
# path('url path, views.py function names)
# ex. 127.0.0.1:8000/admin/
path('addTodo/', addTodo),
path('admin/', admin.site.urls),
path('deleteTodo/<int:todo_id>/', deleteTodo),
path('search/', searchtodolist),
]
最后是我的 todoapp.html
<body>
<br>
<form action="{% url 'search' %}" method="get">{%csrf_token%}
<input type="text" name="content" placeholder="Search a todolist" class="form-control">
<input type="submit" name="submit" value="Search"/>
</form>
<table>
<tr>
<th colspan="2">List of Todos</th>
</tr>
{% for result in results %}
<tr>
<td>{{result.content}}</td>
<td><form action="/deleteTodo/{{todo_items.id}}/" style="display: inline; " method="post">
{%csrf_token%}
<input class="button button1" type="submit" value="Delete"/>
</form></td>
</tr>
{% endfor %}
</tr>
</table>
</body>
你应该给 url 一个名字,以便能够用它的名字反转它
所以使用
path('search/', searchtodolist, name="search")
这为您的 /search/ url 提供了一个名为“搜索”的名称。然后您可以通过 {% url 'search' %}
请注意,如果您在 urls.py 中声明了 app_name
,则应在 url 地址名称中指定
假设urls.py某事像:
app_name = "test_app"
urlpatterns = [
...
]
那么你应该使用{% url 'test_app:search' %}