
detail.htmlを表示させたいがPage not foundと出ます。
チュートリアル https://docs.djangoproject.com/ja/1.11/intro/tutorial04/ と
キータの記事
https://docs.djangoproject.com/ja/1.11/intro/tutorial04/
を見ながらWEBサイトを作っています。
detail.htmlに
<!DOCTYPE html> <h1>{{ question.question_text }}</h1> {% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %} <form action="{% url 'poll_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> </html>
と書きました。このdetail.htmlを表示させたいのですが、
detail.htmlを表示させるであろうURL(http://localhost:8000/polls/1/)にアクセスするとエラーが出ます。URL指定が間違っているのでしょうか?
views.pyには
from django.shortcuts import render from django.utils.html import mark_safe from .models import Question from django.http import HttpResponse from django.shortcuts import Http404 from django.shortcuts import get_object_or_404,redirect from .models import Choice from django.views.generic import TemplateView from django.views.generic import DetailView from django.views.generic import ListView # from .model import AppModel from .forms import MyForm from .forms import VoteForm # Create your views here. def index(request): return render(request,'polls/index.html',{ 'questions': Question.objects.all(), }) def detail(request,pk): obj = get_object_or_404(Question,pk=pk) if request.method == "POST": form = VoteForm(question=obj,data=request.POST) if form.is_valid(): return redirect('polls:results',pk) else: form = VoteForm(question=obj) return render(request,'polls/detail.html',{ 'form':form, 'question': obj, }) def vote(request,pk): pass def results(request,pk): obj = get_object_or_404(Question,pk=pk) return render(request,'polls/results.html',{ 'question':obj, }) def form_test(request): if request.method == "POST": #request.POST??? form = MyForm(data=request.POST) if form.is_valid(): pass else: form = MyForm() return render(request,'polls/form.html',{ 'form':form, })
と、
urls.pyには
from django.conf.urls import url from django.views.generic import TemplateView from . import views urlpatterns = [ url(r'^$',views.index,name='index'), url(r'(?P<pk>\d+)/$', views.detail, name='poll_detail'), url(r'(?P<pk>\d+)/vote$', views.vote, name='poll_vote'), url(r'(?P<pk>\d+)/results$', views.results, name='poll_results'), url(r'^$',TemplateView.as_view(template_name='app/index.html'),name='app_index'), url(r'^form$', views.form_test), ]
と書きました。
ディレクトリ構造は、
のようになっております。
どう直せば表示させられるでしょうか?
回答2件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
退会済みユーザー
2017/08/18 13:08