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

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

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

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1155閲覧

[Django]staticフォルダにアクセスしようとしてエラー「Directory indexes are not allowed here.」

pigton

総合スコア47

Django

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/10/17 00:48

編集2018/10/18 00:28

前提・実現したいこと

Python: 3.6.6
Django: 2.1
Linux: 4.15.0-29-generic
ubuntu: 18.04.1 LTS
Firefox: 62.0.3

Djangoで作成したWebアプリケーションを、Linux上に立てたDockerで動かし、Firefoxで表示しています。

settings.py に正しくstatic ディレクトリを設定できた場合、
http://localhost:8000/static/ファイル名」でアクセスできるようですが、エラーが出てしまいます。

エラー文の「Directory indexes」が何かがわかりません。

解決法は調べてはみましたが、自分の settings.py の内容が間違っているように見えず、お手上げです。
ご教示よろしくお願い致します。

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

http://localhost:8000/static/ にアクセスした場合

Page not found (404) Request Method: GET Request URL: http://localhost:8000/static/ Directory indexes are not allowed here. 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.

http://localhost:8000/static/pycharm.png にアクセスした場合

Page not found (404) Request Method: GET Request URL: http://localhost:8000/static/pycharm.png 'pycharm.png' could not be found 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.

該当のソースコード

config/settings.py

BASE_DIR = '/home/ユーザ名/PycharmProjects/mysite2/mysite2' PROJECT_NAME = 'mysite2' STATIC_URL = '/static/' STATICFILES_DIRS = [os.path.join(BASE_DIR, '/static')] STATIC_ROOT = '/var/www/{}/static'.format(PROJECT_NAME)

config/urls.py(追記)

urlpatterns = [ ・・・略・・・ ] urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

試したこと

python3 manage.py collectstatic

を実行して、「/var/www/mysite2/static」に「pycharm.png」があることを確認。

DEBUF = True を

DEBUG = False

に変更して http://localhost:8000/static/ にアクセスした場合、
http://localhost:8000/static/pycharm.png にアクセスした場合共に

Not Found The requested URL /static/ was not found on this server.

dockerに関して(追記)

docker の起動方法

VirtualBox:~$ docker start mysite2 VirtualBox:~$ docker attach mysite2 VirtualBox:~$ docker attach mysite2 root@63e19d771435:~/mysite2# cd mysite2 root@63e19d771435:~/mysite2/mysite2# python3 manage.py runserver 0.0.0.0:8000 Performing system checks... System check identified no issues (0 silenced). October 17, 2018 - 02:39:11 Django version 2.1, using settings 'config.settings' Starting development server at http://0.0.0.0:8000/ Quit the server with CONTROL-C.

docker ps の結果

VirtualBox:~$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 63e19d771435 mysite2:1.0 "/bin/bash" 13 days ago Up 1 second 0.0.0.0:8000->8000/tcp mysite2

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

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

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

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

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

t_obara

2018/10/17 02:32

docker ps の結果や、dockerインスタンス起動方法を提示してください。
pigton

2018/10/17 02:42

修正依頼ありがとうございました。追記いたしましたので、ご確認いただけますと幸いです。
matsuand

2018/10/17 09:44

私はdjango初心者で、かつ docker は知らないのですが、/var/www/mysite2/static を指定していることに奇妙さを感じます。localhost:8000/static によるアクセスは /var/www 以下を見ていないと思います。config/setting.py ファイル内にて urlpatterns として static のことを指定する必要があるかと想像しますが・・ いかがですか?
pigton

2018/10/18 00:31

>>matsuand さん  修正依頼ありがとうございます。記載を忘れておりましたが、urlpatterns には「urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)」の形で「config/urls.py」に設定済みです。記載漏れ大変申し訳ありません。修正いたしましたので、再度ご確認頂けますと幸いです。
matsuand

2018/10/18 01:05

static()の第3引数に "show_indexes=True" を加えると、そもそものご質問、localhost:8000/static/ のアクセスにより "Directory Indexes" のエラーがなくなりディレクトリ内の一覧が表示されます。デバッグ目的としてどこのディレクトリを見ているのか(見ていないのか)が分かります。/var/www/mysite2/static 配下を本当に見ていますか? 見ていないorエラーになるならば、まだどこかに設定誤りがあると考えられます。
pigton

2018/10/18 01:36 編集

回答ありがとうございます。show_indexes=True を加えてみましたが、 "Directory Indexes" のエラーはなくなりません。他の urlpatterns は正常に動作しているのですが・・・。 また、ディレクトリ階層も表示されません。
matsuand

2018/10/18 01:37

Debug=True にしていますか? エラーメッセージ 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.
pigton

2018/10/18 01:40

何度もご回答いただきありがとうございます。DEBUG = True になっています。
matsuand

2018/10/18 01:55

Debug=True にしていて、show_indexes=True を加えて、localhost:8000/static/ でエラーになるということは、設定が誤っていると思われます。記載した設定内容と実機の設定内容に違いはありませんか? 転記ミスはありませんか?
matsuand

2018/10/18 02:16

すみません。私もよく分かっていないので、localhost:8000/static アクセスのエラーは、とりあえずセキュリティ的には「当たり前」のエラーなので飛ばした方がよいと思います。(本当は解決すれば全て解決のなのですが)
matsuand

2018/10/18 02:16

すみません。私もよく分かっていないので、localhost:8000/static アクセスのエラーは、とりあえずセキュリティ的には「当たり前」のエラーなので飛ばした方がよいと思います。(本当は解決すれば全て解決のなのですが)
matsuand

2018/10/18 02:31

/var/www/mysite2/static のように、開発ディレクトリ ~/mysite2 から見た外部ディレクトリに持っていくのがアウトのような気がします。./manage.py findstatic pycharm.png しても認識されないと思います。~/mysite2 配下に static ディレクトリを設けて、それに合わせて設定しなおせば動くと思います。Apache などと連携する場合には外部ディレクトリでもいけますが、runserver ではどうも外部ディレクトリはダメそうです。
t_obara

2018/10/25 10:59

[./manage.py findstatic .] の結果をご覧になるとヒントが得られるかもしれません。
guest

回答1

0

自己解決

たくさんの修正依頼ありがとうございます。
こちらの質問ですが、PC故障により同じ事象の確認が困難となってしまいました。
ここまでの修正依頼を残すため、削除依頼はせずに自己解決とさせて頂きます。
皆様のご協力、ありがとうございました。

投稿2018/10/29 02:31

pigton

総合スコア47

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問