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

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

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

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

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Python

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

Q&A

解決済

1回答

2252閲覧

【Django】本番環境で静的ファイルを配信することができない

rain_history

総合スコア0

Django

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

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Python

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

0グッド

0クリップ

投稿2021/08/09 08:58

編集2021/08/14 09:02

前提・実現したいこと

DjangoにてTwittterもどきを開発している初心者です。
先日ようやく完成してherokuにデプロイを実施したところ、デプロイ自体は成功しましたが、サーバーエラー(500)が発生しました。
本番環境でもエラーメッセージが出るよう、下記記事を参考に実装したところ、以下のようなエラーメッセージが表示されました。
色々解消方法を探っておりますが、どうしてもエラーが解消されない状態です……。

参考サイト
https://qiita.com/yuu-eguci/items/a1e4b0a2f238d5ccc985

<2021/8/14追記〉
・表題を変更しました。
【旧題】⇒【Django】herokuでデプロイした結果、staticfilesが原因のサーバーエラー(500)が発生する

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

Error

1ValueError at /accounts/login/ 2Missing staticfiles manifest entry for 'favicon.ico'

tree

1PENTO_ARTS (1) 2├── accounts (2) 3│ ├── __pycache__ 4│ ├── migrations 5│ │ ├── __pycache__ 6│ │ └── __init__.py 7│ └── templates 8│ └── account 9│ └── login.html 10├── pento_app (3) 11│ ├── static 12│ │ └── favicon.ico 13│ └── templates 14│ └── base.html 15├── pento_arts 16│ ├── settings.py 17│ └── urls.py 1819└── staticfiles 20 ├── admin 21 │ ├── css 22 │ ├── fonts 23 │ ├── img 24 │ │ └── gis 25 │ └── js 26 │ ├── admin 27 │ └── vendor 28 └── favicon.ico 29

(1)PENTO_ARTS = プロジェクト名
(2)accounts = アプリ名
(3)pento_app = アプリ名

試したこと

・『python manage.py collectstatic』コマンドでプロジェクトフォルダ直下の「staticfiles」に静的ファイルを集約(favicon.icoも含む)。
・settings.pyファイルのstaticfilesの設定を以下のように修正。
・urls.pyファイルにもstaticfilesの設定を以下のように追加。

・上記作業を行ったうえで、もう一度デプロイを行ってもエラーは変わらずでした。
・settings.pyの設定が誤っているのでしょうか……。どなたかご教示頂けますと幸いです。

〈2021/8/11追記〉
・favicon.icoの記述箇所『base.html』のコードを追記しました。

〈2021/8/14追記〉
・ディレクトリ構造を追加
・settings.pyを修正の上、全文を記載(セキュリティ上、一部は除く)
・login.htmlを追加
・whitenoiseはインストール済みです。 ⇒ whitenoise=5.2.0

※質問は初めてのため、情報がかなり不足しているかもしれません。必要に応じて追記させて頂きます。

該当のソースコード

settings

1 2import os 3import django_heroku 4from pathlib import Path 5import environ 6 7<省略> 8 9# プロジェクトのベースフォルダを示す 10BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 11REPOSITORY_ROOT = os.path.dirname(BASE_DIR) 12 13#サーバが受理するサーバアドレスを指定する。この値を正確に記述することは「Hostヘッダインジェクション攻撃」に対して有効 14ALLOWED_HOSTS = ["*"] 15 16INSTALLED_APPS = [ 17 'pento_app.apps.PentoAppConfig', 18 'accounts.apps.AccountsConfig', 19 'django.contrib.admin', 20 'django.contrib.auth', 21 'django.contrib.contenttypes', 22 'django.contrib.sessions', 23 'django.contrib.messages', 24 'django.contrib.staticfiles', 25 'django.contrib.sites', 26 'allauth', 27 'allauth.account', 28 'allauth.socialaccount', 29 'bootstrap4', 30 'imagekit', 31] 32 33MIDDLEWARE = [ 34 'django.middleware.security.SecurityMiddleware', 35 'django.contrib.sessions.middleware.SessionMiddleware', 36 'django.middleware.common.CommonMiddleware', 37 'django.middleware.csrf.CsrfViewMiddleware', 38 'django.contrib.auth.middleware.AuthenticationMiddleware', 39 'django.contrib.messages.middleware.MessageMiddleware', 40 'django.middleware.clickjacking.XFrameOptionsMiddleware', 41 'whitenoise.middleware.WhiteNoiseMiddleware', 42] 43 44<省略> 45 46STATIC_URL = '/static/' 47 48STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles') 49STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage' 50 51django_heroku.settings(locals()) 52

urls

1 2from django.contrib.staticfiles.urls import staticfiles_urlpatterns 3 4urlpatterns = [ 5 6<省略> 7 8] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) 9 10urlpatterns += staticfiles_urlpatterns() 11urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 12 13 14from pento_app.views import my_customized_server_error 15handler500 = my_customized_server_error 16

base

1 2{% load static %} 3{% load bootstrap4 %} 4 5<!DOCTYPE html> 6<html lang="ja"> 7 8<head> 9 <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous"> 10 <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css"> 11 <link rel="shortcut icon" href="{% static 'favicon.ico' %}"> 12 <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script> 13 <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script> 14 <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script> 15 16 <link rel="stylesheet" type="text/css" href="{% static 'header.css' %}"> 17 <link rel="stylesheet" type="text/css" href="{% static 'footer.css' %}"> 18 <meta charset="UTF-8"> 19 <meta name="viewport" content="width=device-width,initial-scale=1"> 20 21 {% block Title %}<title>PENTO-ARTS</title>{% endblock Title %} 22 23 <link href="https://cdnjs.cloudflare.com/ajax/libs/lightbox2/2.7.1/css/lightbox.css" rel="stylesheet"> 24 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 25 <script src="https://cdnjs.cloudflare.com/ajax/libs/lightbox2/2.7.1/js/lightbox.min.js" type="text/javascript"></script> 26 27</head> 28 29<body> 30 31 <!-- Header Start --> 32 <header class="site-header"> 33 <div class="wrapper site-header__wrapper"> 34 <h2 class="brand">PENTO-ARTS</h2> 35 </div> 36 </header> 37 <!-- Header End --> 38 39{% block content %} 40{% endblock content %} 41 42<footer id="footer01" class="footer outer-block"> 43 44 <p class="copyright"> 45 <省略> 46 </p> 47</footer> 48 49</body> 50<script> 51 $.ajaxSetup({ 52 beforeSend: function (xhr, settings) { 53 function getCookie(name) { 54 var cookieValue = null; 55 if (document.cookie && document.cookie != '') { 56 var cookies = document.cookie.split(';'); 57 for (var i = 0; i < cookies.length; i++) { 58 var cookie = jQuery.trim(cookies[i]); 59 if (cookie.substring(0, name.length + 1) == (name + '=')) { 60 cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); 61 break; 62 } 63 } 64 } 65 return cookieValue; 66 } 67 if (!(/^http:.*/.test(settings.url) || /^https:.*/.test(settings.url))) { 68 xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken')); 69 } 70 } 71 }); 72 $(document).on("click", ".post-like", function () { 73 var id = $(this).data('id'); 74 $.ajax({ 75 type: "post", 76 url: '{% url "pento_app:like" %}', 77 data: { 78 id: id, 79 csrfmiddlewaretoken: $("#csrfmiddlewaretoken").val() 80 }, 81 success: function (data) { 82 $("#post-like-" + id).removeClass("post-like text-info").addClass("post-liked disabled text-secondary"); 83 var like_count = data["like_count"] 84 $("#like-count-" + id).html(like_count); 85 alert(data["message"]) 86 } 87 }); 88 }); 89</script> 90 91</html> 92

login

補足情報(FW/ツールのバージョンなど)

・Python 【version = 3.9.2】
・Django 【version = 3.1.7】
・windows10

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

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

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

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

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

holy_

2021/08/10 17:47

favicon.icoを使用しいる箇所のコードも提示していだだければと思います
rain_history

2021/08/11 01:09 編集

holy_様 追記・修正依頼頂きありがとうございます。 favicon.icoを使用している該当箇所のコード(base.html)を追記しました。 また何か不足点等ございましたら、ご指摘頂けますと幸いです。
guest

回答1

0

自己解決

解決できました。
settings.pyのデータベース設定、STATIC設定周りを修正しました。

settings

1import django_heroku 2 3DATABASES = { 4 'default': { 5 'ENGINE': 'django.db.backends.postgresql_psycopg2', 6 'NAME': 'name', 7 'USER': 'user', 8 'PASSWORD': '', 9 'HOST': 'host', 10 'PORT': '', 11 } 12} 13 14import dj_database_url 15 16 17db_from_env = dj_database_url.config(conn_max_age=600, ssl_require=True) 18DATABASES['default'].update(db_from_env) 19 20<省略> 21 22STATIC_URL = '/static/' 23STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles') 24STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage' 25 26#最後尾に記述 27django_heroku.settings(locals()) 28

投稿2021/08/16 12:52

rain_history

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問