基本はこちらを参照しましたが、追加で色々やる必要があったので、その備忘録
pythonanywhere
pythonanywhereは無料で利用できるが、使用期間をクリックし更新しなければ
3ヶ月ほどで、期限が切れるため注意
api tokenの作成もここで行なっておく
Djnagoをdeploy
consoleにアクセスし、黒いCLI画面から諸々の操作を行う。
git pullする
githubのkeyを作成し、pull可能にする。
githubのkey取得に手間取り、pullの許可も行う。
以下を参考にpull
git pull https://ghp_hogehoge@github.com/username/repositoyname.git
mysqlのconsoleから、databaseを作成する。
consoleに入って、databaseを作成する
settings.pyを本番用にカスタマイズする必要があるため
mysqlのhostnameを調べる
→databaseタブからhostnameが見れる
pip install mysqlclient
も実行しておきましょう
以下のようになります
hostname: <username>.mysql.pythonanywhere-services.com
name: <username>$test_db
wsgiの記述を変更
書き方がダメだったのか、setdefaultの書き方だとエラーが出たので、変更しました
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'test.settings')
↓
os.environ['DJANGO_SETTINGS_MODULE'] = 'test.settings'
また、本番のpathも追加で記述が必要になります。
このpathの追加がかなり調べるのがしんどかった
完成コード
import os
import sys
#追加
path = '/home/username/test/test1'
if path not in sys.path:
sys.path.append(path)
from django.core.wsgi import get_wsgi_application
#変更
os.environ['DJANGO_SETTINGS_MODULE'] = 'test.settings'
application = get_wsgi_application()
static file
djangoではstatic fileにcssや画像データを格納するみたいです
このあたりのpath周りをセッティング
STATIC_URL = '/static/'
STATICFILES_DIRS = [
BASE_DIR / 'static',
]
STATIC_ROOT = '/home/username/test/static'
python manage.py collectstatic
を実行するとstaticフォルダに移動される
この時、staticフォルダを手動で作る必要あり
form.is_valid()
formを使い登録するところでエラーが発生
debug=Trueには本番ではあまりやらない方がいいので、localで対応
messageをtemplate上に出して、確認を行う
form = UserCreationForm(request.POST)
for e in form:
messages.error(request,e.errors)
また、databaseのエラーも出たが、migrateがうまくいっていなかったみたい。
きちんとやり直すといいかも
#その他
localでdotenvを使用していたが、本番ではうまく機能しなかった
また後ほど調査してみる