Django 教程:反转为“细节”,参数“(”,)“未找到.尝试了 1 种模式:['轮询\/(?P



当我遇到这个问题时,我正在遵循Django教程。
我试图复制粘贴并一次又一次地阅读教程,但我无法修复它。

错误是:"未找到'细节'的反转。detail' 不是有效的视图函数或模式名称。

错误回溯:

Environment:

Request Method: GET
Request URL: http://127.0.0.1:8000/polls/
Django Version: 2.0.3
Python Version: 3.5.2
Installed Applications:
['polls',
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles']
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']

Template error:
In template /home/cristian/Desktop/build/polls/templates/polls/index.html, error at line 1
   Reverse for 'detail' with arguments '('',)' not found. 1 pattern(s) tried: ['polls\/(?P<question_id>[0-9]+)\/$']
   1 : <li><a href=" {% url 'detail' question.id %} ">{{ question.question_text }}</a></li>
Traceback:
File "/home/cristian/.local/lib/python3.5/site-packages/django/core/handlers/exception.py" in inner
  35.             response = get_response(request)
File "/home/cristian/.local/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response
  128.                 response = self.process_exception_by_middleware(e, request)
File "/home/cristian/.local/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response
  126.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/cristian/Desktop/build/polls/views.py" in index
  10.     return render(request, 'polls/index.html', context)
File "/home/cristian/.local/lib/python3.5/site-packages/django/shortcuts.py" in render
  36.     content = loader.render_to_string(template_name, context, request, using=using)
File "/home/cristian/.local/lib/python3.5/site-packages/django/template/loader.py" in render_to_string
  62.     return template.render(context, request)
File "/home/cristian/.local/lib/python3.5/site-packages/django/template/backends/django.py" in render
  61.             return self.template.render(context)
File "/home/cristian/.local/lib/python3.5/site-packages/django/template/base.py" in render
  175.                     return self._render(context)
File "/home/cristian/.local/lib/python3.5/site-packages/django/template/base.py" in _render
  167.         return self.nodelist.render(context)
File "/home/cristian/.local/lib/python3.5/site-packages/django/template/base.py" in render
  943.                 bit = node.render_annotated(context)
File "/home/cristian/.local/lib/python3.5/site-packages/django/template/base.py" in render_annotated
  910.             return self.render(context)
File "/home/cristian/.local/lib/python3.5/site-packages/django/template/defaulttags.py" in render
  447.             url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app)
File "/home/cristian/.local/lib/python3.5/site-packages/django/urls/base.py" in reverse
  88.     return iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs))
File "/home/cristian/.local/lib/python3.5/site-packages/django/urls/resolvers.py" in _reverse_with_prefix
  632.         raise NoReverseMatch(msg)
Exception Type: NoReverseMatch at /polls/
Exception Value: Reverse for 'detail' with arguments '('',)' not found. 1 pattern(s) tried: ['polls\/(?P<question_id>[0-9]+)\/$']


views.py:

from django.shortcuts import get_object_or_404, render
from django.http import HttpResponseRedirect
from django.urls import reverse
from .models import Choice, Question
    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)
    def detail(request, question_id):
        question = get_object_or_404(Question, pk=question_id)
        return render(request, 'polls/detail.html', {'question': question})
    def results(request, question_id):
        question = get_object_or_404(Question, pk=question_id)
        return render(request, 'polls/results.html', {'question': question})

models.py

import datetime
from django.db import models
from django.utils import timezone

class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published', null=True)
    def __str__(self):
        return self.question_text
    def was_published_recently(self):
        return self.pub_date >= timezone.now() - datetime.timedelta(days=1)

class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)
    def __str__(self):
        return self.choice_text

urls.py

from django.urls import path
from . import views
urlpatterns = [
    path('', views.index, name='index'),
    path('<int:question_id>/', views.detail, name='detail'),
    path('<int:question_id>/results/', views.results, name='results'),
    path('<int:question_id>/vote/', views.vote, name='vote'),
]

索引.html

<li><a href="{% url 'detail' question.id %}">{{ question.question_text }}</a></li>

细节.html

<h1>{{ question.question_text }}</h1>
{% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %}
<form action={% url 'polls:vote' poll.id %}" method="post">
{% csrf_token %}
{% for choice in question.choice_set.all %}
    <input type="radio" name="choice" id="choice{{ forloop.counter }}" value="{{ choice.id }}" />
    <label for="choice{{ forloop.counter }}">{{ choice.choice_text }}</label><br />
{% endfor %}
<input type="submit" value="Vote" />
</form>

我希望你能帮助我,谢谢。

错误在索引中.html

<li><a href="{% url 'detail' question.id %}">{{ question.question_text }}</a></li>

删除索引中的 url 详细信息.html并将其放入详细信息.html。如您所见,网址调度程序找不到您的网址,因为没有可用的轮询 ID。

最新更新