質問編集履歴

3

collectstaticの実行

2020/08/04 12:49

投稿

matsufff
matsufff

スコア3

test CHANGED
File without changes
test CHANGED
@@ -239,3 +239,71 @@
239
239
  (参考)
240
240
 
241
241
  [Pythonでパス文字列からファイル名・フォルダ名・拡張子を取得、結合](https://note.nkmk.me/python-os-basename-dirname-split-splitext/)
242
+
243
+
244
+
245
+ --------
246
+
247
+ (追記)
248
+
249
+ チュートリアル[How to setup static files in Django](https://help.pythonanywhere.com/pages/DjangoStaticFiles/)を読んでいて気がつきました。
250
+
251
+
252
+
253
+ >Run pythonX.Y manage.py collectstatic
254
+
255
+
256
+
257
+
258
+
259
+ `collectstatic`→これコマンドですね!
260
+
261
+
262
+
263
+ ```
264
+
265
+ 12:04 ~/matsufff.pythonanywhere.com (master)$ python3.7 manage.py collectstatic
266
+
267
+ You have requested to collect static files at the destination
268
+
269
+ location as specified in your settings:
270
+
271
+ /home/matsufff/matsufff.pythonanywhere.com/static
272
+
273
+ This will overwrite existing files!
274
+
275
+ Are you sure you want to do this?
276
+
277
+ Type 'yes' to continue, or 'no' to cancel: yes
278
+
279
+ 1 static file copied to '/home/matsufff/matsufff.pythonanywhere.com/static', 119 unmodified.
280
+
281
+ 12:05 ~/matsufff.pythonanywhere.com (master)$
282
+
283
+ ```
284
+
285
+
286
+
287
+ `<BASE_DIR>`を検索し、staticがあれば、`<BASE_DIR>/static`にコピーするコマンドでした。
288
+
289
+
290
+
291
+ サーバー側を確認すると`<BASE_DIR>/static`ができている・・・いつの間に!?
292
+
293
+ ローカルにはないフォルダです。
294
+
295
+
296
+
297
+ PythonAnywareのWebタブから/stastc/の設定を戻して、ローカルと同一にしました。
298
+
299
+ これでGitで同期をとれるようになりました。
300
+
301
+
302
+
303
+ しかしローカルとサーバーのSTATIC_ROOTはずれたままです。
304
+
305
+ 謎は深まるばかりです。
306
+
307
+
308
+
309
+ 作り直した方がいい気がしてきました。

2

BASE_DIRについて

2020/08/04 12:49

投稿

matsufff
matsufff

スコア3

test CHANGED
File without changes
test CHANGED
@@ -109,3 +109,133 @@
109
109
 
110
110
 
111
111
  ---
112
+
113
+
114
+
115
+ ベストアンサーで教えて頂いたチュートリアルを参考に
116
+
117
+ [How to setup static files in Django](https://help.pythonanywhere.com/pages/DjangoStaticFiles/)
118
+
119
+
120
+
121
+ PythonAnywareのWebタブの`Static files:`に `<UserDir>/blog/static`を登録、リロードでCSSを読み込めました。
122
+
123
+
124
+
125
+ setting.pyが更新され、ローカルでは`<UserDir>/blogstatic`、サーバーでは `<UserDir>/blog/static`とずれてしまいました。
126
+
127
+
128
+
129
+ つっこんで調べてみます。
130
+
131
+
132
+
133
+
134
+
135
+ `settings.py`のSTATIC_ROOTを確認すると
136
+
137
+
138
+
139
+ ```
140
+
141
+ # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
142
+
143
+ BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
144
+
145
+
146
+
147
+ <中略>
148
+
149
+
150
+
151
+ STATIC_URL = '/static/'
152
+
153
+ STATIC_ROOT = os.path.join(BASE_DIR, 'static')
154
+
155
+ ```
156
+
157
+
158
+
159
+ BASE_DIR = os.path.dirname( #ひとつ上のパス
160
+
161
+ os.path.dirname( #ひとつ上のパス
162
+
163
+ os.path.abspath( #絶対パス
164
+
165
+ __file__ #実行中のファイルの場所
166
+
167
+ )))
168
+
169
+
170
+
171
+ PythonAnywareのコンソールで確認してみる。
172
+
173
+
174
+
175
+ ```
176
+
177
+ 12:17 ~/matsufff.pythonanywhere.com (master)$ pwd
178
+
179
+ /home/matsufff/matsufff.pythonanywhere.com
180
+
181
+ 12:17 ~/matsufff.pythonanywhere.com (master)$ ls
182
+
183
+ blog db.sqlite3 manage.py mysite requirements.txt static
184
+
185
+ 12:17 ~/matsufff.pythonanywhere.com (master)$ cd blog
186
+
187
+ 12:20 ~/matsufff.pythonanywhere.com/blog (master)$ ls
188
+
189
+ __init__.py __pycache__ admin.py apps.py migrations models.py static templates tests.py urls.py views.py
190
+
191
+ 12:20 ~/matsufff.pythonanywhere.com/blog (master)$ cd templates/
192
+
193
+ 12:21 ~/matsufff.pythonanywhere.com/blog/templates (master)$ ls
194
+
195
+ blog
196
+
197
+ 12:21 ~/matsufff.pythonanywhere.com/blog/templates (master)$ python
198
+
199
+ Python 2.7.12 (default, Oct 8 2019, 14:14:10)
200
+
201
+ [GCC 5.4.0 20160609] on linux2
202
+
203
+ Type "help", "copyright", "credits" or "license" for more information.
204
+
205
+ >>> import os
206
+
207
+ >>> os.path.dirname(os.path.dirname(os.path.abspath('')))
208
+
209
+ '/home/matsufff/matsufff.pythonanywhere.com'
210
+
211
+ >>> BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath('')))
212
+
213
+ >>> STATIC_URL = '/static/'
214
+
215
+ >>> STATIC_ROOT = os.path.join(BASE_DIR, 'static')
216
+
217
+ >>> STATIC_ROOT
218
+
219
+ '/home/matsufff/matsufff.pythonanywhere.com/static'
220
+
221
+ >>>
222
+
223
+ ```
224
+
225
+
226
+
227
+ BASE_DIRに入るのが、setting.pyを実行した場所から2つ上のディレクトリ。
228
+
229
+ /home/static/だとすると、/home/static/blog/template あたりから実行されている???
230
+
231
+
232
+
233
+ この辺がちょっとまだわかりません。
234
+
235
+
236
+
237
+
238
+
239
+ (参考)
240
+
241
+ [Pythonでパス文字列からファイル名・フォルダ名・拡張子を取得、結合](https://note.nkmk.me/python-os-basename-dirname-split-splitext/)

1

PythonAnywareではCSSがリンク先にない

2020/08/04 12:35

投稿

matsufff
matsufff

スコア3

test CHANGED
File without changes
test CHANGED
@@ -79,3 +79,33 @@
79
79
  }
80
80
 
81
81
  ```
82
+
83
+
84
+
85
+ ---
86
+
87
+ ○確認したこと
88
+
89
+
90
+
91
+ ブラウザの「ページのソースを表示」でソースを確認するとCSSの部分は次のようになっていました。
92
+
93
+ ```
94
+
95
+ <link rel="stylesheet" href="/static/css/blog.css">
96
+
97
+ ```
98
+
99
+
100
+
101
+ クリックすると、ローカルではCSSが開き、PythonAnywareでは`Page not found (404)`となりました。
102
+
103
+
104
+
105
+ http://matsufff.pythonanywhere.com/static/css/blog.css
106
+
107
+ http://127.0.0.1:8000/static/css/blog.css
108
+
109
+
110
+
111
+ ---