概要
この記事では__Django-girlsのチュートリアル__を進める初心者向けに、PythonAnywhere上でのConsoleがうまく挙動しなくなった際の留意点を初心者が幾つかまとめておく。
半日くらい分かんなくてもう無理詰んだ、って思っても
まぁ、大体エラー文を読み続けてればなんとかなります。たぶん。
実行環境
- Windows10 64bit
- Python 3.6
- git version 2.27.0.windows.1
- Chromeブラウザ
エラーが出た際の確認手順
原因は色々考えられるが、
1.まずはリモートリポジトリにあげる前のローカル環境で実行してみよう。
python manage.py runserver
を実行して、サイトが動いているか(変更が反映されているか)確認。
ここでhtmlやcssが反映されていない場合は、
- サーバーを再度走らせる
-
ブラウザの更新ボタンを右クリックしてキャッシュクリア&リロード
を試す。
反映されない場合、__コードのほうに誤りがないか確認__する。
問題がなければ次のステップ。
2.GitHubにちゃんと変更がpushされているか確認。
ブラウザからリポジトリの中にある、更新したファイルをみてみる。
反映されていない場合、Console上で再度以下のコマンドをたたく。
% git status
% git add --all .
% git status
赤文字が緑になったら選択されているので、そのままコミット。(XXXXはブランチ名)
% git commit
% git push origin XXXX
__詳しい用語の説明__については、他記事で分かりやすくまとめてくれている方がいるのでここでは省略する👉(【Git】オレならこう説明する!Git初心者への用語説明)
※git statusで変更が検出されない場合は以下の手順を試す
% git fetch --all
% git add -A
% git commit -m"recommit" -v
% git push
※マージせなあかんで!と怒られちゃった場合
% git merge --allow-unrelated-histories origin/master
調べたところ、どうも現verでは__関係のないヒストリー同士をマージするにはオプションの追記が必要__らしい。詳しくはこちらの記事👉(:初めてGitHubリポジトリにpushしたらrejectedエラーになったときの対応メモ)
※(余談)プルしようとしたら「マージする前にコミットするか隠して!」と怒られた場合👇
error: Your local changes to the following files would be overwritten by merge:
XXXX.py
Please commit your changes or stash them before you merge.
Aborting
対処法➊:隠す
# 一旦退避してプル
$ git stash
$ git pull origin master
# スタッシュを戻す
$ git stash pop
対処法➋:強制的にマージ(とにかくリモートに合わせれりゃいい!って時にオススメ)
$ git fetch origin
$ git reset --hard origin/master
リモートリポジトリに無事プッシュ出来たら、PythonAnywhere.comへ。
3.PythonAnyWhere上でConsoleエラーが出る時
GitHubまではうまくいってるのに、ブラウザにうまく表示されない。
そん時は、だいたいConsoleを立ち上げればヒントが隠されている。
Consoleを立ち上げて
通常、--nuke
オプションを付与して以下のコマンドを実行することで自動でvenvを作り直したりあれこれ自動でやってくれる。
pa_autoconfigure_django.py https://github.com/your-github-username/my-first-blog.git --nuke
これでうまく表示されればそれでOK。
自分の場合、復習がてらもう一度 同一コンソール上からPythonAnywhere.comを作る所からやろうとして、見事に躓いた。
⇩KeyError: 'collectstatic'
と表示されとまってしまう。
色々と試行錯誤した結果、
__原因はSECRET_KEYが上手く読み込まれてないこと__と分かった。
どうりで、ページは表示されなくなるし作り直そうとしても途中で止まってしまうわけだ・・。.ignoreに指定しているからよく考えなくても当たり前だったorz
__この記事__を参考に別スクリプトでランダム生成してから読み込む形にしていたので、
from django.core.management.utils import get_random_secret_key
secret_key = get_random_secret_key()
text = 'SECRET_KEY = \'{0}\''.format(secret_key)
with open('local_settings.py', 'w') as f:
print(text, file=f)
に少し変えてPythonAnywhereの__ブラウザ上から一回Run__。
無事SECRET_KEYが生成され、再びBashコンソールから上述の--nuke
付コマンドで再構築。
そのまま再度pullして、
$ cd ~/<your-pythonanywhere-domain>.pythonanywhere.com
$ git pull
思ったこと
Django-girlsのチュートリアル、SECRET_KEYを分離させないのはなんでなんだろう。。
でもまあ、躓いたおかげででGitHuへコミットする流れやらバージョン管理の仕組みやら体感出来て理解ふかマンハッタン島。
この記事が役に立ったらLGMTしてくれると励みになります。
(Reference&&Thanks)
- Djangoの使い方~デプロイ編②~
- DjangoのSECRET_KEYをバージョン管理対象外にする
- [KeyError: 'collectstatic' When deploying the Django application to pythonanywhere]
(https://stackoverflow.com/questions/55629795/keyerror-collectstatic-when-deploying-the-django-application-to-pythonanywher) - gitでリモートのブランチにローカルを強制一致させたい時
- 本番環境でpullしたらコンフリクト?解決法3パターン!