teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

4

本文修正

2021/08/14 09:02

投稿

rain_history
rain_history

スコア0

title CHANGED
File without changes
body CHANGED
@@ -60,6 +60,7 @@
60
60
  ・『python manage.py collectstatic』コマンドでプロジェクトフォルダ直下の「staticfiles」に静的ファイルを集約(favicon.icoも含む)。
61
61
  ・settings.pyファイルのstaticfilesの設定を以下のように修正。
62
62
  ・urls.pyファイルにもstaticfilesの設定を以下のように追加。
63
+
63
64
  ・上記作業を行ったうえで、もう一度デプロイを行ってもエラーは変わらずでした。
64
65
  ・settings.pyの設定が誤っているのでしょうか……。どなたかご教示頂けますと幸いです。
65
66
 
@@ -70,6 +71,7 @@
70
71
  ・ディレクトリ構造を追加
71
72
  ・settings.pyを修正の上、全文を記載(セキュリティ上、一部は除く)
72
73
  ・login.htmlを追加
74
+ ・whitenoiseはインストール済みです。 ⇒ whitenoise=5.2.0
73
75
 
74
76
 
75
77
  ※質問は初めてのため、情報がかなり不足しているかもしれません。必要に応じて追記させて頂きます。

3

本文修正

2021/08/14 09:02

投稿

rain_history
rain_history

スコア0

title CHANGED
File without changes
body CHANGED
@@ -67,7 +67,7 @@
67
67
  ・favicon.icoの記述箇所『base.html』のコードを追記しました。
68
68
 
69
69
  〈2021/8/14追記〉
70
- ・ディレク構造を追加
70
+ ・ディレクトリ構造を追加
71
71
  ・settings.pyを修正の上、全文を記載(セキュリティ上、一部は除く)
72
72
  ・login.htmlを追加
73
73
 

2

本文修正

2021/08/14 08:58

投稿

rain_history
rain_history

スコア0

title CHANGED
@@ -1,1 +1,1 @@
1
- 【Django】herokuデプロした結果、staticfilesが原因のサーバーエラー(500)が発生する
1
+ 【Django】本番環境静的ファルを配信することができない
body CHANGED
@@ -8,12 +8,53 @@
8
8
  参考サイト
9
9
  https://qiita.com/yuu-eguci/items/a1e4b0a2f238d5ccc985
10
10
 
11
+ <2021/8/14追記〉
12
+ ・表題を変更しました。
13
+  【旧題】⇒【Django】herokuでデプロイした結果、staticfilesが原因のサーバーエラー(500)が発生する
14
+
15
+
11
16
  ### 発生している問題・エラーメッセージ
12
17
 
13
18
  ```Error
19
+ ValueError at /accounts/login/
14
20
  Missing staticfiles manifest entry for 'favicon.ico'
15
21
  ```
16
22
 
23
+ ```tree
24
+ PENTO_ARTS (1)
25
+ ├── accounts (2)
26
+ │ ├── __pycache__
27
+ │ ├── migrations
28
+ │ │ ├── __pycache__
29
+ │ │ └── __init__.py
30
+ │ └── templates
31
+ │ └── account
32
+ │ └── login.html
33
+ ├── pento_app (3)
34
+ │ ├── static
35
+ │ │ └── favicon.ico
36
+ │ └── templates
37
+ │ └── base.html
38
+ ├── pento_arts
39
+ │ ├── settings.py
40
+ │ └── urls.py
41
+
42
+ └── staticfiles
43
+ ├── admin
44
+ │ ├── css
45
+ │ ├── fonts
46
+ │ ├── img
47
+ │ │ └── gis
48
+ │ └── js
49
+ │ ├── admin
50
+ │ └── vendor
51
+ └── favicon.ico
52
+
53
+ ```
54
+ (1)PENTO_ARTS = プロジェクト名
55
+ (2)accounts = アプリ名
56
+ (3)pento_app = アプリ名
57
+
17
58
  ### 試したこと
18
59
 
19
60
  ・『python manage.py collectstatic』コマンドでプロジェクトフォルダ直下の「staticfiles」に静的ファイルを集約(favicon.icoも含む)。
@@ -25,12 +66,33 @@
25
66
  〈2021/8/11追記〉
26
67
  ・favicon.icoの記述箇所『base.html』のコードを追記しました。
27
68
 
69
+ 〈2021/8/14追記〉
70
+ ・ディレクり構造を追加
71
+ ・settings.pyを修正の上、全文を記載(セキュリティ上、一部は除く)
72
+ ・login.htmlを追加
73
+
74
+
28
75
  ※質問は初めてのため、情報がかなり不足しているかもしれません。必要に応じて追記させて頂きます。
29
76
 
30
77
 
31
78
  ### 該当のソースコード
32
79
 
33
80
  ```settings
81
+
82
+ import os
83
+ import django_heroku
84
+ from pathlib import Path
85
+ import environ
86
+
87
+ <省略>
88
+
89
+ # プロジェクトのベースフォルダを示す
90
+ BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
91
+ REPOSITORY_ROOT = os.path.dirname(BASE_DIR)
92
+
93
+ #サーバが受理するサーバアドレスを指定する。この値を正確に記述することは「Hostヘッダインジェクション攻撃」に対して有効
94
+ ALLOWED_HOSTS = ["*"]
95
+
34
96
  INSTALLED_APPS = [
35
97
  'pento_app.apps.PentoAppConfig',
36
98
  'accounts.apps.AccountsConfig',
@@ -48,25 +110,45 @@
48
110
  'imagekit',
49
111
  ]
50
112
 
113
+ MIDDLEWARE = [
114
+ 'django.middleware.security.SecurityMiddleware',
115
+ 'django.contrib.sessions.middleware.SessionMiddleware',
116
+ 'django.middleware.common.CommonMiddleware',
117
+ 'django.middleware.csrf.CsrfViewMiddleware',
118
+ 'django.contrib.auth.middleware.AuthenticationMiddleware',
119
+ 'django.contrib.messages.middleware.MessageMiddleware',
120
+ 'django.middleware.clickjacking.XFrameOptionsMiddleware',
121
+ 'whitenoise.middleware.WhiteNoiseMiddleware',
122
+ ]
123
+
51
124
  <省略>
52
125
 
53
- STATIC_URL = '/staticfiles/'
126
+ STATIC_URL = '/static/'
54
- STATICFILES_DIRS = [os.path.join(BASE_DIR, 'staticfiles')]
127
+
55
128
  STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
56
129
  STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
57
130
 
131
+ django_heroku.settings(locals())
132
+
58
133
  ```
59
134
 
60
135
  ```urls
136
+
137
+ from django.contrib.staticfiles.urls import staticfiles_urlpatterns
138
+
61
139
  urlpatterns = [
62
140
 
63
141
  <省略>
64
142
 
65
- ] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
143
+ ] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
66
144
 
145
+ urlpatterns += staticfiles_urlpatterns()
67
146
  urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
68
- urlpatterns += staticfiles_urlpatterns()
69
147
 
148
+
149
+ from pento_app.views import my_customized_server_error
150
+ handler500 = my_customized_server_error
151
+
70
152
  ```
71
153
 
72
154
  ```base
@@ -163,9 +245,43 @@
163
245
  </html>
164
246
 
165
247
  ```
248
+ ```login
249
+ {% extends 'base.html' %}
250
+ {% load static %}
251
+ {% load bootstrap4 %}
252
+ {% block Title %}<title>PENTO-ARTS | ログイン</title>{% endblock Title %}
166
253
 
254
+ {% block content %}
167
255
 
256
+ <link rel="stylesheet" href="{% static 'style.css' %}">
168
257
 
258
+ <div class="form-content">
259
+ <h1 class="mb-4">ログイン</h1>
260
+
261
+ {% if messages %}
262
+ <ul>
263
+ {% for message in messages %}
264
+ <li class="message_fontcolor">{{ message }}</li>
265
+ {% endfor %}
266
+ </ul>
267
+ {% endif %}
268
+
269
+ <form method="post" action="{% url 'account_login' %}">
270
+ {% csrf_token %}
271
+ {% bootstrap_form form %}
272
+ <button class="btn btn-info btn-block" type="submit">ログイン</button>
273
+ <p class="mt-3"><a href="{% url 'account_signup' %}" class="text-info">新規登録はこちら</a></p>
274
+ <!--※パスワードリセット機能は一旦保留
275
+ <p class="mt-3"><a href="{% url 'account_reset_password' %}" class="text-info">パスワードをお忘れですか?</a></p>
276
+ -->
277
+ </form>
278
+ </div>
279
+ {% endblock content %}
280
+
281
+ ```
282
+
283
+
284
+
169
285
  ### 補足情報(FW/ツールのバージョンなど)
170
286
  ・Python 【version = 3.9.2】
171
287
  ・Django 【version = 3.1.7】

1

base.htmlのコードを追記

2021/08/14 08:57

投稿

rain_history
rain_history

スコア0

title CHANGED
File without changes
body CHANGED
@@ -22,6 +22,9 @@
22
22
  ・上記作業を行ったうえで、もう一度デプロイを行ってもエラーは変わらずでした。
23
23
  ・settings.pyの設定が誤っているのでしょうか……。どなたかご教示頂けますと幸いです。
24
24
 
25
+ 〈2021/8/11追記〉
26
+ ・favicon.icoの記述箇所『base.html』のコードを追記しました。
27
+
25
28
  ※質問は初めてのため、情報がかなり不足しているかもしれません。必要に応じて追記させて頂きます。
26
29
 
27
30
 
@@ -66,8 +69,103 @@
66
69
 
67
70
  ```
68
71
 
72
+ ```base
69
73
 
74
+ {% load static %}
75
+ {% load bootstrap4 %}
70
76
 
77
+ <!DOCTYPE html>
78
+ <html lang="ja">
79
+
80
+ <head>
81
+ <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
82
+ <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css">
83
+ <link rel="shortcut icon" href="{% static 'favicon.ico' %}">
84
+ <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
85
+ <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>
86
+ <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
87
+
88
+ <link rel="stylesheet" type="text/css" href="{% static 'header.css' %}">
89
+ <link rel="stylesheet" type="text/css" href="{% static 'footer.css' %}">
90
+ <meta charset="UTF-8">
91
+ <meta name="viewport" content="width=device-width,initial-scale=1">
92
+
93
+ {% block Title %}<title>PENTO-ARTS</title>{% endblock Title %}
94
+
95
+ <link href="https://cdnjs.cloudflare.com/ajax/libs/lightbox2/2.7.1/css/lightbox.css" rel="stylesheet">
96
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
97
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/lightbox2/2.7.1/js/lightbox.min.js" type="text/javascript"></script>
98
+
99
+ </head>
100
+
101
+ <body>
102
+
103
+ <!-- Header Start -->
104
+ <header class="site-header">
105
+ <div class="wrapper site-header__wrapper">
106
+ <h2 class="brand">PENTO-ARTS</h2>
107
+ </div>
108
+ </header>
109
+ <!-- Header End -->
110
+
111
+ {% block content %}
112
+ {% endblock content %}
113
+
114
+ <footer id="footer01" class="footer outer-block">
115
+
116
+ <p class="copyright">
117
+ <省略>
118
+ </p>
119
+ </footer>
120
+
121
+ </body>
122
+ <script>
123
+ $.ajaxSetup({
124
+ beforeSend: function (xhr, settings) {
125
+ function getCookie(name) {
126
+ var cookieValue = null;
127
+ if (document.cookie && document.cookie != '') {
128
+ var cookies = document.cookie.split(';');
129
+ for (var i = 0; i < cookies.length; i++) {
130
+ var cookie = jQuery.trim(cookies[i]);
131
+ if (cookie.substring(0, name.length + 1) == (name + '=')) {
132
+ cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
133
+ break;
134
+ }
135
+ }
136
+ }
137
+ return cookieValue;
138
+ }
139
+ if (!(/^http:.*/.test(settings.url) || /^https:.*/.test(settings.url))) {
140
+ xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken'));
141
+ }
142
+ }
143
+ });
144
+ $(document).on("click", ".post-like", function () {
145
+ var id = $(this).data('id');
146
+ $.ajax({
147
+ type: "post",
148
+ url: '{% url "pento_app:like" %}',
149
+ data: {
150
+ id: id,
151
+ csrfmiddlewaretoken: $("#csrfmiddlewaretoken").val()
152
+ },
153
+ success: function (data) {
154
+ $("#post-like-" + id).removeClass("post-like text-info").addClass("post-liked disabled text-secondary");
155
+ var like_count = data["like_count"]
156
+ $("#like-count-" + id).html(like_count);
157
+ alert(data["message"])
158
+ }
159
+ });
160
+ });
161
+ </script>
162
+
163
+ </html>
164
+
165
+ ```
166
+
167
+
168
+
71
169
  ### 補足情報(FW/ツールのバージョンなど)
72
170
  ・Python 【version = 3.9.2】
73
171
  ・Django 【version = 3.1.7】