Python Version: 3.8.5
Djangoのチュートリアルを実行しているのですが、
チュートリアル4の/polls/1/にアクセスすると、
投票画面ではなくエラーが出てしまいます。
mysite/polls/templates/polls/detail.html (Source does not exist)
とでているので、detail.htmlのどこかが間違ってるのかと見てるのですが、原因がわからないです。
どなたか、ご教授いただけないでしょうか?
よろしくお願いいたします。
行いたいこと
"ブラウザで /polls/1/ を表示して投票してみましょう。票を入れるたびに、結果のページが更新されていることがわかるはずです。選択肢を選ばずにフォームを送信すると、エラーメッセージを表示されるはずです。"
polls/templates/polls/details.html
<h1>{{ question.question_text }}</h1> <ul> {% for choice.choice in question.choice_set.all %} <li>{{ choice.choice_text }}</li> {% endfor %} </ul> <form action="{% url 'polls:vote' question.id %}" method="post"> {% csrf_token %} <fieldset> <legend><h1>{{ question.question_text }}</h1></legend> {% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %} {% 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 %} </fieldset> <input type="submit" value="Vote"> </form>
polls/views.py
from django.shortcuts import render from django.http import HttpResponse, HttpResponseRedirect from django.template import loader from django.urls import reverse from .models import Question #from django.shortcuts import Question from django.shortcuts import get_object_or_404, render from django.http import Http404 from .models import Choice, Question # Create your views here. 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 index(request): # return HttpResponse("Hello, world. You're at the polls index.") 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}) # response = "You're looking at the result of question %s." # return HttpResponse(response % question_id) def vote(request, question_id): question = get_object_or_404(Question, pk=question_id) try: selected_choice = question.choice_set.get(pk=request.POST['choice']) except (KeyError, Choice.DoesNotExist): return render(request, 'polls/detail.html', { 'question': question, 'error_message': "You didn't select a choice.", }) else: selected_choice.votes += 1 selected_choice.save() return HttpResponseRedirect(reverse('polls:results', args=(question.id,)))
polls/urls.py
from django.urls import path from . import views app_name = 'polls' 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'), ]
なにかサイトか、教材をみてやっていますか?
https://docs.djangoproject.com/ja/3.2/intro/tutorial01/
上記の、djangoチュートリアルを見て行っております!
情報漏れており申し訳ありません。
回答1件
あなたの回答
tips
プレビュー