最近、Django の学習を開始しましたが、早い段階で問題に遭遇しました。このチュートリアルのパート 4 で、コードを汎用ビューに変更した後、詳細サイトが以前とは異なるページのように見えます。
ポイントが見つからず、エラーステートメントが表示されませんでした。
以下にコードを掲載しました。
polls/urls.py:
from polls.models import Poll
urlpatterns =patterns('',
url(r'$',
ListView.as_view(
queryset=Poll.objects.order_by('-pub_date')[:5],
context_object_name='latest_poll_list',
template_name='polls/index.html'),
name='index'),
url(r'^(?P<pk>\d+)/$',
DetailView.as_view(
model=Poll,
template_name='polls/detail.html'),
name='detail'),
url(r'^(?P<pk>\d+)/results/$',
DetailView.as_view(
model=Poll,
template_name='polls/results.html'),
name='results'),
url(r'^(?P<poll_id>\d+)/vote/$', 'polls.views.vote', name='vote'),
)
index.html
{% if latest_poll_list %}
<ul>
{% for poll in latest_poll_list %}
<li><a href = "{% url 'polls:detail' poll.id %}">{{poll.question}}</a></li>
{% endfor %}
{% else %}
<p> No polls are available.</p>
{% endif %}
詳細.html
<h1>{{poll.question}}</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 poll.choice_set.all %}
<input type = 'radio' name = 'choice' id = 'choice{{forloop.counter}}' value = '{{choice.id}}'/>
<lable for = 'choice{{forloop.counter}}'>{{choice.choice_text}}</lable><br/>
{%endfor%}
<input type ='submit' value = 'Vote'/>
</form>