Djangoレスポンスコード301,302,404,410返す方法まとめ[responsecode]
更新日:2021年2月1日環境:Python3.8.2 Django3.1
・404 ページがない場合
views.py
from django.http import HttpResponseNotFound
def index(request):
return HttpResponseNotFound('ページがない場合に表示するコメント。') # 404
def index(request):
return HttpResponseNotFound('ページがない場合に表示するコメント。') # 404
データを1件取得する時にない場合404を返す。
views.py
from django.shortcuts import get_object_or_404
from .models import blog
q = get_object_or_404(blog, pk=id)
from .models import blog
q = get_object_or_404(blog, pk=id)
データリストを取得する時にない場合404を返す。
views.py
from django.shortcuts import get_list_or_404
from .models import blog
q = get_list_or_404(blog.objects.order_by('pk'))
from .models import blog
q = get_list_or_404(blog.objects.order_by('pk'))
・410 ページがなくなった場合
views.py
from django.http import HttpResponseGone
def index(request):
return HttpResponseGone('ページは削除されました。') # 410
def index(request):
return HttpResponseGone('ページは削除されました。') # 410
・301 リダイレクト URLを変更した場合
views.py
from django.http import HttpResponsePermanentRedirect
def index(request):
return HttpResponsePermanentRedirect('/path/hoge/') # 301
def index(request):
return HttpResponsePermanentRedirect('/path/hoge/') # 301
・302 リダイレクト 一時的にURLを変更する場合
views.py
from django.http import HttpResponseRedirect
def index(request):
return HttpResponseRedirect('/path/hoge/') # 302
def index(request):
return HttpResponseRedirect('/path/hoge/') # 302
以上、Djangoではショートカット関数を使用すれば、データがない場合はそこで処理を中断して
404レスポンスコードを返すのが簡単にできました。