Django v1.0 documentation

ショートカット関数

revision-up-to:8961 (1.0)

django.shotcuts パッケージでは、MVC の複数のレベルを「橋渡し」するため のヘルパ関数やクラスを定義しています。言い換えると、これらの関数やクラスは、 利便性を実現するために、きちんと制御された形でのカップリングを行えるように しているのです。

render_to_response()

django.shortcuts.render_to_response は、引数指定したテンプレートとコン テキストを使ってテンプレートをレンダし、レンダ結果のテキストの入った HttpResponse オブジェクトを返します。

必須の引数

template
利用したいテンプレートの名前です。

省略可能な引数

dictionary
テンプレートコンテキストに追加したい値の入った辞書です。デフォルトでは、 この引数は空の辞書です。辞書の値が呼出可能オブジェクトである場合、ビュー はテンプレートをレンダするの直前にこの値を呼び出します。
context_instance

テンプレートをレンダするときに使うコンテキストインスタンスです。デフォ ルトでは、テンプレートは (dictionary の値が入った) Context イン スタンスを使ってレンダされます。 コンテキストプロセッサ を使 いたい場合には、例えば以下のように RequestContext を使ってテンプレー トをレンダしてください:

return render_to_response('my_template.html',
                          my_data_dictionary,
                          context_instance=RequestContext(request))

mimetype

Django 1.0 で新たに登場しました.

レンダ結果のドキュメントに対して指定する MIME タイプです。デフォルトの 値として、 DEFAULT_CONTENT_TYPE を使います。

使用例

使用例

以下の例では、 myapp/index.html を MIME タイプ application/xhtml+xml でレンダしてます:::

from django.shortcuts import render_to_response

def my_view(request):
    # View code here...
    return render_to_response('myapp/index.html', {"foo": "bar"},
        mimetype="application/xhtml+xml")

上の例は、以下の例と等価です:

from django.http import HttpResponse
from django.template import Context, loader

def my_view(request):
    # View code here...
    t = loader.get_template('myapp/template.html')
    c = Context({'foo': 'bar'})
    r = HttpResponse(t.render(c),
        mimetype="application/xhtml+xml")

get_object_or_404

django.shortcuts.get_object_or_404 は、指定したモデルマネジャに対して get() を呼出します。ただし、マネジャがモデ ルの DoesNotExist を送出した場合には、 django.http.Http404 を送出し ます。

必須の引数

klass
オブジェクトの取得対象である、 Model, Manager または QuerySet インスタンスです。
**kwargs
検索パラメタです。 get()filter() と同じ引数を使えます。

使用例

以下の例では、 MyModel から主キーが 1 のオブジェクトを取得しています:

from django.shortcuts import get_object_or_404

def my_view(request):
    my_object = get_object_or_404(MyModel, pk=1)

この例は、以下の例と等価です:

from django.http import Http404

def my_view(request):
    try:
        my_object = MyModel.objects.get(pk=1)
    except MyModel.DoesNotExist:
        raise Http404

注意: get() と同様、オブジェクトが複数見つかった場合には、 MultipleObjectsReturned 例外が送出されます。

get_list_or_404

django.shortcuts.get_list_or_404 は指定したモデルマネジャに対して filter() を呼び出した結果を返します。戻り 値のリストが空なら、 django.http.Http404 を送出します。

必須の引数

klass
オブジェクトの取得対象である、 Model, Manager または QuerySet インスタンスです。
**kwargs
検索パラメタです。 get()filter() と同じ引数を使えます。

使用例

以下の例では、 MyModel から published=True のオブジェクトを全て取得して います:

from django.shortcuts import get_list_or_404

def my_view(request):
    my_objects = get_list_or_404(MyModel, published=True)

この例は、以下の例と等価です:

from django.http import Http404

def my_view(request):
    my_objects = MyModel.objects.filter(published=True)
    if not my_objects:
        raise Http404