質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Q&A

解決済

1回答

950閲覧

Django "Page not found"と表示される

senbakoki

総合スコア6

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

0グッド

0クリップ

投稿2020/04/21 07:32

編集2020/04/22 04:37

前提・実現したいこと

python初学者です。
Djangoで簡単な本の管理アプリを作っています。
ローカルでサイトを動かした時、おそらくurls.pyの設定を間違っているからか、サイト画面が表示されません。

発生している問題・エラーメッセージ

Page not found (404) Request Method: GET Request URL: http://127.0.0.1:8000/book/list/ Using the URLconf defined in mysite.urls, Django tried these URL patterns, in this order: admin/ meibo/ blog/ book/ [name='list'] The current path, book/list/, didn't match any of these. You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard 404 page.

該当のソースコード

ディレクトリ構造は、以下です。
├── book
│ ├── init.py
│ ├── pycache(以下省略)
│ ├── admin.py
│ ├── apps.py
│ ├── migrations(以下省略)
│ ├── models.py
│ ├── tests.py
│ ├── urls.py
│ ├──templates──book──booklist.html
│ └── views.py
├── db.sqlite3
├── manage.py
└── mysite
├── init.py
├── pycache(以下省略)
├── settings.py
├── urls.py
└── wsgi.py
またこの他に、blogアプリとmeiboアプリもそれぞれディレクトリが存在します

該当コードは以下です

mysite/urls.py

from django.urls import path, include from django.views.generic import RedirectView urlpatterns = [ path('admin/', admin.site.urls), path('meibo/', include('meibo.urls')), path('blog/', include('blog.urls')), path('',RedirectView.as_view(url='/blog/')), path('book/', include('book.urls')), ]

book/urls.py

from django.urls import path from .views import BookListView urlpatterns = [ path('list/', BookListView.as_view(), name='list'), ]

book/models.py

from django.db import models class BookModel(models.Model): bookname = models.CharField(max_length=200) summary = models.TextField() rating = models.IntegerField()

book/booklist.html

{% for item in object_list %} {{ item.name}} {% endfor % }

book/views.py

from django.views.generic import ListView from .models import BookModel class BookListView(ListView): model = BookModel template_name = "booklist.html"

試したこと

urls.pyやsetting.py等いろいろ変えてみましたが、上手くいきませんでした。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

外している可能性が高いですが、book/urls.pyに下記を追加するとどうなりますか?

python

1app_name = 'book'

また、「TemplateDoesNotExist at /book/list/」となる件についてですが、mysite/settings.pyのTEMPLATESリスト内の辞書に、 「'APP_DIRS': True,」はありますか?
もし、ある場合はエラーページに、Djangoがどのディレクトリにあるテンプレートを探しているかを示すログが出力されますので、その部分を確認してください。

python

1TEMPLATES = [ 2 { 3 'BACKEND': 'django.template.backends.django.DjangoTemplates', 4 'DIRS': [os.path.join(BASE_DIR, 'templates')], 5 'APP_DIRS': True, 6# snip

投稿2020/04/21 13:02

編集2020/04/22 05:04
hasami

総合スコア1277

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

senbakoki

2020/04/22 00:26

回答ありがとうございます。 試してみた所、"Page not found"は表示されなくなりました! しかし、次に、”TemplateDoesNotExist at /book/list/”と表示されてしまい、DIRS等、自分なりにいろいろ触ったのですが、解消されませんでした。 御返事頂けると幸いです。
hasami

2020/04/22 04:07

質問にBookListViewの定義を提示してください。
senbakoki

2020/04/22 04:38

ご指摘ありがとうございます。 追加させて頂きました!
senbakoki

2020/04/22 07:16

エラー文をしっかり見た所、templatesの次までしか認識していなかったので、booklist.htmlをずらすと、表示されました。ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問