1

我一直在阅读 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.

进行了一些谷歌搜索并确认我已将视图命名为“详细信息”并且还命名了我的应用程序。

以下是我的代码。请告诉什么是错的。我正在认真学习本教程,但这出现了。我怎样才能修复它与教程保持一致?谢谢!

文件: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),
]
4

2 回答 2

1

您尚未在 views.py 文件中定义任何名为“详细信息”的函数。

添加此代码。

def detail(request, id):
    context = dict()
    return render(request, 'polls/index.html', context)

您还必须添加结果和投票功能。

从 index.html 文件中删除注释行。这些行中的语法不正确,Django 尝试在渲染之前解析注释行。

于 2017-12-26T15:21:12.190 回答
0

从您已经指定的应用程序中mysite/urls.py删除namespaceapp_name

或者您可以删除app_name并保留namespace(不确定这是否适用于 Django 2.0,因为此版本中的 app_name 和命名空间有一些调整)。

于 2017-12-26T16:36:49.943 回答