| revision-up-to: | 11321 (1.1) unfinished |
|---|
django.shotcuts パッケージでは、MVC の複数のレベルを「橋渡し」するため のヘルパ関数やクラスを定義しています。言い換えると、これらの関数やクラスは、 利便性を実現するために、きちんと制御された形でのカップリングを行えるように しているのです。
テンプレートをレンダするときに使うコンテキストインスタンスです。デフォ ルトでは、テンプレートは (dictionary の値が入った) Context イン スタンスを使ってレンダされます。 コンテキストプロセッサ を使 いたい場合には、例えば以下のように RequestContext を使ってテンプレー トをレンダしてください:
return render_to_response('my_template.html',
my_data_dictionary,
context_instance=RequestContext(request))
レンダ結果のドキュメントに対して指定する 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")
Returns an HttpResponseRedirect to the apropriate URL for the arguments passed.
The arguments could be:
By default issues a temporary redirect; pass permanent=True to issue a permanent redirect
You can use the redirect() function in a number of ways.
By passing some object; that object's get_absolute_url() method will be called to figure out the redirect URL:
def my_view(request):
...
object = MyModel.objects.get(...)
return redirect(object)
By passing the name of a view and optionally some positional or keyword arguments; the URL will be reverse resolved using the reverse() method:
def my_view(request):
...
return redirect('some-view-name', foo='bar')
By passing a hardcoded URL to redirect to:
def my_view(request):
...
return redirect('/some/url/')
This also works with full URLs:
def my_view(request):
...
return redirect('http://example.com/')
By default, redirect() returns a temporary redirect. All of the above forms accept a permanent argument; if set to True a permanent redirect will be returned:
def my_view(request):
...
object = MyModel.objects.get(...)
return redirect(object, permanent=True)
以下の例では、 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 例外が送出されます。
以下の例では、 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
Aug 19, 2010