###前提・実現したいこと
こちらを参考にDjangoをつかってブログを作ろうとしています。名前からも察する通りマッチしたページが無いとのことなのですが、具体的に何が原因でこのようなエラーに至っているのか。そして具体的な解決策が思いつかないまま数時間が経ってしまったので質問させて頂きました。
###発生している問題・エラーメッセージ
[22/Jan/2017 09:23:54] "GET /14 HTTP/1.1" 404 2239 Internal Server Error: / Traceback (most recent call last): File "/usr/local/lib/python3.5/site-packages/django/core/handlers/exception.py", line 39, in inner response = get_response(request) File "/usr/local/lib/python3.5/site-packages/django/core/handlers/base.py", line 249, in _legacy_get_response response = self._get_response(request) File "/usr/local/lib/python3.5/site-packages/django/core/handlers/base.py", line 187, in _get_response response = self.process_exception_by_middleware(e, request) File "/usr/local/lib/python3.5/site-packages/django/core/handlers/base.py", line 185, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/Users/hironorisama/Projects/github/ryugaku_otaku/blog/views.py", line 8, in post_list return render(request, 'blog/post_list.html', {'posts': posts}) File "/usr/local/lib/python3.5/site-packages/django/shortcuts.py", line 30, in render content = loader.render_to_string(template_name, context, request, using=using) File "/usr/local/lib/python3.5/site-packages/django/template/loader.py", line 68, in render_to_string return template.render(context, request) File "/usr/local/lib/python3.5/site-packages/django/template/backends/django.py", line 66, in render return self.template.render(context) File "/usr/local/lib/python3.5/site-packages/django/template/base.py", line 208, in render return self._render(context) File "/usr/local/lib/python3.5/site-packages/django/template/base.py", line 199, in _render return self.nodelist.render(context) File "/usr/local/lib/python3.5/site-packages/django/template/base.py", line 994, in render bit = node.render_annotated(context) File "/usr/local/lib/python3.5/site-packages/django/template/base.py", line 961, in render_annotated return self.render(context) File "/usr/local/lib/python3.5/site-packages/django/template/loader_tags.py", line 174, in render return compiled_parent._render(context) File "/usr/local/lib/python3.5/site-packages/django/template/base.py", line 199, in _render return self.nodelist.render(context) File "/usr/local/lib/python3.5/site-packages/django/template/base.py", line 994, in render bit = node.render_annotated(context) File "/usr/local/lib/python3.5/site-packages/django/template/base.py", line 961, in render_annotated return self.render(context) File "/usr/local/lib/python3.5/site-packages/django/template/loader_tags.py", line 70, in render result = block.nodelist.render(context) File "/usr/local/lib/python3.5/site-packages/django/template/base.py", line 994, in render bit = node.render_annotated(context) File "/usr/local/lib/python3.5/site-packages/django/template/base.py", line 961, in render_annotated return self.render(context) File "/usr/local/lib/python3.5/site-packages/django/template/defaulttags.py", line 209, in render nodelist.append(node.render_annotated(context)) File "/usr/local/lib/python3.5/site-packages/django/template/base.py", line 961, in render_annotated return self.render(context) File "/usr/local/lib/python3.5/site-packages/django/template/defaulttags.py", line 439, in render url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app) File "/usr/local/lib/python3.5/site-packages/django/urls/base.py", line 91, in reverse return force_text(iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs))) File "/usr/local/lib/python3.5/site-packages/django/urls/resolvers.py", line 392, in _reverse_with_prefix (lookup_view_s, args, kwargs, len(patterns), patterns) django.urls.exceptions.NoReverseMatch: Reverse for 'blog.views.post_detail' with arguments '()' and keyword arguments '{'pk':not found. 0 pattern(s) tried: []
###該当のソースコード
post_list.html
1 <!-- post_list.html --> 2{% extends 'blog/base.html' %} 3 4{% block content %} 5 {% for post in posts %} 6 <div class="post"> 7 <div class="date"> 8 {{ post.published_date }} 9 </div> 10 <h1><a href="{% url 'blog.views.post_detail' pk=post.pk %}">{{ post.title }}</a></h1> 11 <p>{{ post.text|linebreaks }}</p> 12 </div> 13 {% endfor %} 14{% endblock content %}
post_detail.html
1 <!-- post_detail.html --> 2{% extends 'blog/base.html' %} 3 4{% block content %} 5 <div class="post"> 6 {% if post.published_date %} 7 <div class="date"> 8 {{ post.published_date }} 9 </div> 10 {% endif %} 11 <h1>{{ post.title }}</h1> 12 <p>{{ post.text|linebreaks }}</p> 13 </div> 14{% endblock %}
views.py
1# views.py 2from django.shortcuts import render 3from django.shortcuts import render, get_object_or_404 4from django.utils import timezone 5from .models import Post 6 7def post_list(request): 8 posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date') 9 return render(request, 'blog/post_list.html', {'posts': posts}) 10 11def post_detail(request, pk): 12 post = get_object_or_404(Post, pk=pk) 13 return render(request, 'blog/post_detail.html', {'post': post})
urls.py
1#urls.py 2from django.conf.urls import include, url 3from . import views 4 5urlpatterns = [ 6 url(r'^$', views.post_list), 7 url(r'^post/(?P<pk>[0-9]+)/$', views.post_detail), 8]
base.html
1 <!-- base.html --> 2{% load staticfiles %} 3<html> 4 <head> 5 <title>RYUOTA</title> 6 <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"> 7 <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css"> 8 <link href='//fonts.googleapis.com/css?family=Lobster&subset=latin,latin-ext' rel='stylesheet' type='text/css'> 9 <link rel="stylesheet" href="{% static 'css/blog.css' %}"> 10 </head> 11 <body> 12 <div class="page-header"> 13 <h1> 14 {% load static %} 15 <img src="{% static "images/ryuota-logo.png" %}" alt="My image"/> 16 </h1> 17 </div> 18 19 <div class="content container"> 20 <div class="row"> 21 <div class="col-md-8"> 22 {% block content %} 23 {% endblock %} 24 </div> 25 </div> 26 </div> 27 </body> 28</html>
###試したこと
参考にしているサイトを参考にしながら誤りがないかもう一度やり直してみる。
<a href="{% url 'blog.views.post_detail' pk=post.pk %}">{{ post.title }}</a>
を取り除くと正常にページが表示されることからblog.views.post_detail
関数にマッチしたページが無いためにエラーが起きているものだと思われる。
###補足情報(言語/FW/ツール等のバージョンなど)
python 3.5.2
$ pip list appnope (0.1.0) beautifulsoup4 (4.5.1) bleach (1.5.0) chardet (2.3.0) cssselect (1.0.0) decorator (4.0.11) dj-database-url (0.4.1) dj-static (0.0.6) Django (1.10.4) django-contrib-comments (1.7.3) django-toolbelt (0.0.1) filebrowser-safe (0.4.6) future (0.16.0) grappelli-safe (0.4.5) gunicorn (19.6.0) html5lib (0.9999999) ipython (5.1.0) ipython-genutils (0.1.0) lxml (3.7.1) Mezzanine (4.2.2) oauthlib (2.0.1) olefile (0.44) pexpect (4.2.1) pickleshare (0.7.4) Pillow (4.0.0) pip (9.0.1) prompt-toolkit (1.0.9) psycopg2 (2.6.2) ptyprocess (0.5.1) Pygments (2.1.3) PyMySQL (0.7.9) pytz (2016.10) requests (2.12.3) requests-oauthlib (0.7.0) selenium (3.0.2) setuptools (25.2.0) simplegeneric (0.8.1) six (1.10.0) slackbot (0.4.1) slacker (0.9.30) static3 (0.7.0) traitlets (4.3.1) tzlocal (1.3) wcwidth (0.1.7) websocket-client (0.40.0) wheel (0.29.0) whitenoise (3.2.2)
回答1件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。