【Django】サーバへのデプロイ時に気を付けること(Invalid HTTP_HOST header等)
はじめに
ローカル環境でWEBアプリを作成し、
さあ、サーバにデプロイだ!
というときに気を付けることを書きます。
#実際に私が引っ掛かってます...
1. サーバ起動のコマンドはいつもと違う
2. 設定ファイルに一手間
1. サーバ起動のコマンドはいつもと違う
ローカルで動かす場合、以下を実行しておけば問題ありませんでした。
python manage.py runserver
ただ、実際に外部サーバで動かす場合は、
以下のように「0.0.0.0:8000」を加える必要があります。
python manage.py runserver 0.0.0.0:8000
2. 設定ファイルに一手間
サーバも起動したことだし、
WEBアプリを確認してみよう
とアクセスすると...
なんじゃこりゃですね。(^^;
そんな時は、
プロジェクト名/settings.py
の中にある、
ALLOWED_HOSTS = []
を以下のように変更して更新するとちゃんとアクセスできるようになります。
最後に
今回はデプロイ時の注意点を紹介しました。
今まさに私が作ったWEBアプリをデプロイ中なのでいろいろ躓いている最中です。
さらに気を付けることが判明した時は更新していきます。
以上。
SNSのシェア、いいね、ツイート等のボタン作成方法
【Django】HTMLのfor文でカウントアップ
Djangoで開発していますが、
forの中でカウントアップする方法を試行錯誤していました。
30分ぐらい調べたり実装したりしましたが
ようやく実現方法を見つけたので備忘録
{% for item in items %} {{ forloop.counter }} #先頭(1)から1ずつカウントアップしてくれる {{ forloop.revcounter }} #末尾から1ずつカウントダウンしてくれる {%endfor%}
知っていれば一発ですね...
以上
【関連記事】
qstairs.hatenablog.com
qstairs.hatenablog.com
qstairs.hatenablog.com
【Django】ログイン処理
Djangoで簡単なログイン処理について備忘録
とりあえずソースコードは以下
# views.py def login(request): try: m = Member.objects.get(username=request.POST['username']) except Member.DoesNotExist: return render(request, 'login.html', {'response':-2}) if m.password == request.POST['password']: request.session['member_id'] = m.id return render(request, '次の画面へ') else: return render(request, 'login.html', {'response':-1})
処理の流れは以下
ログイン画面で入力したusernameが
Memberテーブルに存在すればMemberオブジェクトを取得
Memberテーブルになければ
except Member.DoesNotExist:
で例外をキャッチし、ログイン画面にエラーコードを返す
Memberオブジェクトを取得後、
ログイン画面で入力したpasswordがMemberのパスワードと一致すれば
セッションにIDを登録して次の画面へ
一致しなければ
ログイン画面にエラーコードを返す
【Django記事】
qstairs.hatenablog.com
qstairs.hatenablog.com
qstairs.hatenablog.com
【Django】UnicodeEncodeError: ‘ascii’ codec can’t encode characterが出たら
Djangoでmodelsで定義しているモデルで日本語を使うと
以下のエラーが出る場合があります。
UnicodeEncodeError: ‘ascii’ codec can’t encode character
その場合は、モデルに
def __unicode__(self)
を追加しましょう。
def __str__(self)だけだとだめみたいです。
【Django】サイト内でのユーザIDの保持について
Webサイトでは必須のユーザIDの保持について、
Djangoでの方法を備忘録。
セッションの使い方 — Django 1.4 documentation
下記は上記サイトから引用
ログイン時にユーザのIDを保持し、
ログアウト時に削除する
def login(request): m = Member.objects.get(username__exact=request.POST['username']) if m.password == request.POST['password']: request.session['member_id'] = m.id return HttpResponse("You're logged in.") else: return HttpResponse("Your username and password didn't match.") def logout(request): try: del request.session['member_id'] except KeyError: pass return HttpResponse("You're logged out.")