読者です 読者をやめる 読者になる 読者になる

Django1.1で追加されたredirect関数を使ってみる

Djangoでどこかのページにリダイレクトする時は、HttpResponseRedirectを使ってました。こんな感じ

from django.http import HttpResponseRedirect

def redirect_twitter(request):
    return HttpResponseRedirect("http://twitter.com")

はっきり言ってHttpResponseRedirectは長過ぎる。入力するのだるい。
そんな時にDjango1.1のショートカット関数のドキュメント読んでたら、redirect関数があるらしい。
こんな感じ

from django.shortcuts import redirect

def redirect_twitter(request):
    return redirect("http://twitter.com")

入力しやすくなってうれしいですね!
さらにモデルにget_absolute_urlメソッドを定義しておき、redirect関数の引数にURLではなくモデルオブジェクトを入れることで、get_absolute_urlのURLにリダイレクトされるらしいです。便利

from django.shortcuts import redirect

class MyModel(models.Model):
    .
    .
    .
    def get_absolute_url(self):
        return "http://twitter.com"

def redirect_twitter(request)
    object = MyModel.objects.get(...)
    return redirect(object)