1. TOP
  2. ブログ
  3. Djangoレスポンスコード301,302,404,410返す方法まとめ[responsecode]

Djangoレスポンスコード301,302,404,410返す方法まとめ[responsecode]

更新日:2018年10月5日

Django Viewsで、レスポンスコード301,302リダイレクトや404,410を返す方法について、まとめましたので記載しておきます。

環境:Python3.6.5 Django2.1

・404 ページがない場合
views.py
from django.http import HttpResponseNotFound

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)


データリストを取得する時にない場合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'))



・410 ページがなくなった場合
views.py
from django.http import HttpResponseGone

def index(request):
    return HttpResponseGone('ページは削除されました。') # 410



・301 リダイレクト URLを変更した場合
views.py
from django.http import HttpResponsePermanentRedirect

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


以上、Djangoではショートカット関数を使用すれば、データがない場合はそこで処理を中断して
404レスポンスコードを返すのが簡単にできました。
B!

前の記事:Django データベース SQL SELECTによるデータ取得方法 一覧によるまとめ

次の記事:Django Template(テンプレート)で ループカウンタ番号を表示