NoReverseMatch:找不到 'detail' 的反向匹配。 (Django 教程)
NoReverseMatch: Reverse for 'detail' not found. (Django Tutorials)
我一直在学习 Django 2 教程。
我收到以下错误:
#Error:
#django.urls.exceptions.NoReverseMatch
#django.urls.exceptions.NoReverseMatch: Reverse for 'detail' not found. 'detail' is not a valid view function or pattern #name.
进行了一些谷歌搜索并确认我已将我的视图命名为 'detail' 并且还命名了我的应用程序。
下面是我的代码。
请告诉我什么是错的。我正在全心全意地按照教程进行操作,但是出现了这个问题。我怎样才能使它与教程保持一致?谢谢!
文件:
mysite/polls/templates/polls/index.html
{% for question in latest_question_list %}
<li><a href="{% url 'polls:detail' question.id %}">{{ question.question_text }}</a></li>
{% endfor %}
mysite/polls/urls.py
app_name = 'polls'
urlpatterns = [
path('', views.index, name='index'),
# ex: /polls/
# path('', views.index, name='index'),
# ex: /polls/5/
path('<int:question_id>/', views.detail, name='detail'),
# ex: /polls/5/results/
path('<int:question_id>/results/', views.results, name='results'),
# ex: /polls/5/vote/
path('<int:question_id>/vote/', views.vote, name='vote'),
]
mysite/polls/views.py
def index(request):
latest_question_list = Question.objects.order_by('-pub_date')[:5]
context = {'latest_question_list': latest_question_list}
return render(request, 'polls/index.html', context)
补充:
mysite/urls.py
urlpatterns = [
path('polls/', include('polls.urls', namespace='polls')),
path('admin/', admin.site.urls),
]
您尚未在 views.py 文件中定义任何名为 'detail' 的函数。
添加此代码。
def detail(request, id):
context = dict()
return render(request, 'polls/index.html', context)
你还要添加结果和投票功能。
从您的 index.html 文件中删除注释行。这些行中的语法不正确,Django 也会在呈现之前尝试解析注释行。
从 mysite/urls.py
中删除 namespace
,因为您已经指定了应用的 app_name
或者您可以删除 app_name
并保留 namespace
(不确定这是否适用于 Django 2.0,因为有 some tweaks in app_name and namespace in this version)。
我一直在学习 Django 2 教程。
我收到以下错误:
#Error:
#django.urls.exceptions.NoReverseMatch
#django.urls.exceptions.NoReverseMatch: Reverse for 'detail' not found. 'detail' is not a valid view function or pattern #name.
进行了一些谷歌搜索并确认我已将我的视图命名为 'detail' 并且还命名了我的应用程序。
下面是我的代码。 请告诉我什么是错的。我正在全心全意地按照教程进行操作,但是出现了这个问题。我怎样才能使它与教程保持一致?谢谢!
文件: mysite/polls/templates/polls/index.html
{% for question in latest_question_list %}
<li><a href="{% url 'polls:detail' question.id %}">{{ question.question_text }}</a></li>
{% endfor %}
mysite/polls/urls.py
app_name = 'polls'
urlpatterns = [
path('', views.index, name='index'),
# ex: /polls/
# path('', views.index, name='index'),
# ex: /polls/5/
path('<int:question_id>/', views.detail, name='detail'),
# ex: /polls/5/results/
path('<int:question_id>/results/', views.results, name='results'),
# ex: /polls/5/vote/
path('<int:question_id>/vote/', views.vote, name='vote'),
]
mysite/polls/views.py
def index(request):
latest_question_list = Question.objects.order_by('-pub_date')[:5]
context = {'latest_question_list': latest_question_list}
return render(request, 'polls/index.html', context)
补充: mysite/urls.py
urlpatterns = [
path('polls/', include('polls.urls', namespace='polls')),
path('admin/', admin.site.urls),
]
您尚未在 views.py 文件中定义任何名为 'detail' 的函数。
添加此代码。
def detail(request, id):
context = dict()
return render(request, 'polls/index.html', context)
你还要添加结果和投票功能。
从您的 index.html 文件中删除注释行。这些行中的语法不正确,Django 也会在呈现之前尝试解析注释行。
从 mysite/urls.py
中删除 namespace
,因为您已经指定了应用的 app_name
或者您可以删除 app_name
并保留 namespace
(不确定这是否适用于 Django 2.0,因为有 some tweaks in app_name and namespace in this version)。