django - 未找到“”的反向。'' 不是我看不到的有效视图函数或模式名称错误
问题描述
Django 3 错误 - 找不到“”的反向。'' 不是有效的视图函数或模式名称。
让我发疯 - 我已经查看了 SO 上针对此类错误的所有其他解决方案,但没有一个适用。
谁能发现解决方案是什么?
base.html 的一部分
<li class="nav-item">
<a class="nav-link" href="{% url 'item-shoppinglist' %}">Shopping List</a>
</li>
购物清单模板
{% extends "base_generic.html" %}
{% block content %}
{% if user.is_authenticated %}
<h1>Shopping List</h1>
{% if item_list %}
<table class="table table-hover table-striped">
<thead class="thead-dark">
<tr>
<th scope="col">Item Name</th>
<th scope="col">Brought?</th>
</tr>
</thead>
<tbody>
{% for item in item_list %}
<tr >
<th scope="row"><a href="{{ item.get_absolute_url }}">{{ item.item_name}}</a></th>
<td><a href="{% url '' item.id %}">Brought</a></td>
</tr>
{% endfor %}
</tbody>
</table>
{% else %}
<p>There are no items on the shopping list</p>
{% endif %}
{% else %}
<h2>Hey there stranger ... looks like you need to log in</h2>
{% endif %}
{% endblock %}
风景
class ItemShoppingList(generic.TemplateView):
model = Item
template_name = 'kitchens/shoppinglist.html'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['item_list'] = Item.objects.filter(item_shoppinglist=1)
return context
OP/urls.py
from django.contrib import admin
from django.urls import path
from django.urls import include
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
path('kitchens/', include('kitchens.urls')),
]
#Add URL maps to redirect the base URL to our application
from django.views.generic import RedirectView
urlpatterns += [
path('', RedirectView.as_view(url='/kitchens/', permanent=True)),
]+ static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
厨房/urls.py -
from django.urls import include, path
from . import views
urlpatterns = [
path('', views.index, name='index'),
path('location/', views.LocationListView.as_view(), name='location'),
path('location/<int:pk>', views.LocationDetailView.as_view(), name='location-detail'),
path('location/create/', views.LocationCreate.as_view(), name='location-create'),
path('location/<int:pk>/update/', views.LocationUpdate.as_view(), name='location-update'),
path('location/<int:pk>/delete/', views.LocationDelete.as_view(), name='location-delete'),
path('shelf/', views.ShelfListView.as_view(), name='shelf'),
path('shelf/<int:pk>', views.ShelfDetailView.as_view(), name='shelf-detail'),
path('shelf/create/', views.ShelfCreate.as_view(), name='shelf-create'),
path('shelf/<int:pk>/update/', views.ShelfUpdate.as_view(), name='shelf-update'),
path('shelf/<int:pk>/delete/', views.ShelfDelete.as_view(), name='shelf-delete'),
path('ajax/load-shelfs/', views.load_shelfs, name='ajax_load_shelfs'), # <-- this one here
path('item/', views.ItemListView.as_view(), name='item'),
path('item/<int:pk>', views.ItemDetailView.as_view(), name='item-detail'),
path('item/create/', views.ItemCreate.as_view(), name='item-create'),
path('item/<int:pk>/update/', views.ItemUpdate.as_view(), name='item-update'),
path('item/<int:pk>/delete/', views.ItemDelete.as_view(), name='item-delete'),
path('item/<int:pk>/use/', views.ItemUseView.as_view(), name='item-use'),
path('item/shoppinglist/', views.ItemShoppingList.as_view(), name='item-shoppinglist'),
path('api/items/', views.ItemsListApiView.as_view(), name='list-create'),
path('api/shelfs/', views.ShelfsListApiView.as_view(), name='list-create'),
path('api/locations/', views.LocationsListApiView.as_view(), name='list-create'),
path('api-auth/', include('rest_framework.urls', namespace='rest_framework')),
]
追溯
Environment:
Request Method: GET
Request URL: http://1212121212<YES THIS MASKED>/kitchens/item/shoppinglist/
Django Version: 3.2.2
Python Version: 3.8.5
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'kitchens.apps.KitchensConfig',
'rest_framework']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware']
Template error:
In template /Users/geekpa/PycharmProjects/OP/kitchens/templates/base_generic.html, error at line 17
Reverse for '' not found. '' is not a valid view function or pattern name.
7 : <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/css/bootstrap.min.css"
8 : integrity="sha384-B0vP5xmATw1+K9KRQjQERJvTumQW0nPEzvF6L/Z6nronJ3oUOFUFpCjEUQouq2+l" crossorigin="anonymous">
9 : <!-- Add additional CSS in static file add chagnes-->
10 : {% load static %}
11 : <link rel="stylesheet" href="{% static 'css/styles.css' %}">
12 : </head>
13 :
14 : <body>
15 : <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"
16 : integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj"
17 : crossorigin="a nonymous"></script>
18 : <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js"
19 : integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN"
20 : crossorigin="anonymous"></script>
21 : <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/js/bootstrap.min.js"
22 : integrity="sha384-+YQ4JLhjyBLPDQt//I+STsc9iw4uQqACwlvpslubQzn4u2UU2UFM80nGisd026JF"
23 : crossorigin="anonymous"></script>
24 :
25 : <div class="pos-f-t">
26 : <div class="collapse" id="navbarToggleExternalContent">
27 : <div class="navbar-expand-lg navbar-light bg-light p-4">
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/core/handlers/exception.py", line 47, in inner
response = get_response(request)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/core/handlers/base.py", line 204, in _get_response
response = response.render()
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/template/response.py", line 105, in render
self.content = self.rendered_content
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/template/response.py", line 83, in rendered_content
return template.render(context, self._request)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/template/backends/django.py", line 61, in render
return self.template.render(context)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/template/base.py", line 170, in render
return self._render(context)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/template/base.py", line 162, in _render
return self.nodelist.render(context)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/template/base.py", line 938, in render
bit = node.render_annotated(context)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/template/base.py", line 905, in render_annotated
return self.render(context)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/template/loader_tags.py", line 150, in render
return compiled_parent._render(context)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/template/base.py", line 162, in _render
return self.nodelist.render(context)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/template/base.py", line 938, in render
bit = node.render_annotated(context)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/template/base.py", line 905, in render_annotated
return self.render(context)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/template/loader_tags.py", line 62, in render
result = block.nodelist.render(context)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/template/base.py", line 938, in render
bit = node.render_annotated(context)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/template/base.py", line 905, in render_annotated
return self.render(context)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/template/defaulttags.py", line 312, in render
return nodelist.render(context)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/template/base.py", line 938, in render
bit = node.render_annotated(context)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/template/base.py", line 905, in render_annotated
return self.render(context)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/template/defaulttags.py", line 312, in render
return nodelist.render(context)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/template/base.py", line 938, in render
bit = node.render_annotated(context)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/template/base.py", line 905, in render_annotated
return self.render(context)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/template/defaulttags.py", line 211, in render
nodelist.append(node.render_annotated(context))
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/template/base.py", line 905, in render_annotated
return self.render(context)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/template/defaulttags.py", line 446, in render
url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/urls/base.py", line 86, in reverse
return resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/urls/resolvers.py", line 694, in _reverse_with_prefix
raise NoReverseMatch(msg)
Exception Type: NoReverseMatch at /kitchens/item/shoppinglist/
Exception Value: Reverse for '' not found. '' is not a valid view function or pattern name.
解决方案
问题在于这条线
<td><a href="{% url '' item.id %}">Brought</a></td>
添加一个有效的 URL 名称,例如
<td><a href="{% url 'item-detail' item.id %}">Brought</a></td>
推荐阅读
- c++ - Hex_string 到 uint8_t msg[]
- xamarin.forms - xamarin.forms shell 中的滚动视图会自动边缘到顶部吗?
- java - Spring-boot 2 中的多个配置文件属性配置
- mockito - 没有为 ArgumentMatcher 对象填充地图
- asp.net-core-mvc - 如何将 ASP.NET Core MVC 引入现有的 ASP.NET 空白项目?
- java - 如何在 vaadin 中布局 Dialog 组件?
- java - 如何删除 TableColumn 中的 HTML 标签
- java - Java8中的字符串操作
- c# - 基于条件的行颜色变化
- r - 如何基于采样生成所有可能的向量而不在 R 中替换?