找不到/ polls /的NoReverseMatch,反向搜索带有参数'('',)'的'vote'。尝试了1个模式:['民意调查/(?P <question_id> [0-9] +)/投票/ $']

时间:2018-12-09 13:36:53

标签: django django-models django-forms django-templates django-views

在/ polls /

处的NoReverseMatch

找不到带有参数'('',)'的'vote'反向。尝试了1个模式:['民意调查/(?P [0-9] +)/投票/ $']

index.html:

    {% if latest_question_list %}
    <ul>
    {% for question in latest_question_list %}
    <!-- # the 'name' value as called by the  url  template tag -->
        <li><a href="{% url 'polls:detail' question.id %}">{{ question.question_text }}</a></li>
<!-- or:
    <li><a href=" url 'detail' question.id "> question.question_text </a></li>
    How does one make it so that Django knows which app view to create for a url when using the  url  template tag?
    So we use polls:detail
 -->
    {% endfor %}
    </ul>
    {% else %}
        <p>No polls are available.</p>
    {% endif %}

    <h1>{{ question.question_text }}</h1>

    {% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %}

    <form action="{% url 'polls:vote' question.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>

enter image description here enter image description here

下面是控制台错误。 stackoverflow中的其他相关问题的答案如下: 不是question_id!是question.id!

第123行错误 找不到带有参数(('',)'的'vote'反向。尝试了1个模式:['民意调查/(?P [0-9] +)/投票/ $']:

113         {% endfor %}
114         </ul>
115         {% else %}
116             <p>No polls are available.</p>
117         {% endif %}
118     
119         <h1>{{ question.question_text }}</h1>
120     
121         {% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %}
122     
123         <form action="{% url 'polls:vote' question.id %}" method="post">
124         {% csrf_token %}
125         {% for choice in question.choice_set.all %}
126             <input type="radio" name="choice" id="choice{{ forloop.counter }}" value="{{ choice.id }}">
127             <label for="choice{{ forloop.counter }}">{{ choice.choice_text }}</label><br>
128         {% endfor %}
129         <input type="submit" value="Vote">
130         </form>
131         </content>

2 个答案:

答案 0 :(得分:0)

在模板的该点上还没有名为question的变量。它仅存在于您的for循环中,但该循环结束后在form标记中发生了错误。

url标记是唯一一个实际显示错误的标记,因为它需要使用question.id的值来创建URL。但实际上该变量的所有其他用法(例如question.question_text)也将显示为空白。

我不太清楚为什么要这样构造模板,但是我怀疑从h1开始的所有内容都应该比endfor标签高得多。

答案 1 :(得分:0)

更改ListView class DetailView(generic.ListView):class DetailView(generic.DetailView):

这可能有效

相关问题