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)。