Djangoのビュー

こんにちは、

今までDjangoの主要なドキュメントをざっと見てきました。あとは概念としてビューとテンプレートがあります。

ビュー

一般的に、ビューはパラメタに従ってデータベースからデータを取り出し、テンプ レートをロードして、取り出したデータでテンプレートをレンダリングします。

ビューの例

def year_archive(request, year):
    a_list = Article.objects.filter(pub_date__year=year)
    return render_to_response('news/year_archive.html',
                              {'year': year, 'article_list': a_list})

この中のrender_to_response()は、引数指定したテンプレートとコン テキストを使ってテンプレートをレンダし、レンダ結果のテキストの入った HttpResponse オブジェクトを返す関数です。

render_to_response()はショートカット関数と呼ばれるものの一つです。django.shotcuts パッケージでは、MVC の複数のレベルを「橋渡し」するため のヘルパ関数やクラスを定義しています。

その他のショートカット関数としては以下があります。

render(request, template[, dictionary][, context_instance][, content_type][, status][, current_app])

与えられたテンプレートとコンテキスト辞書を結合し HttpResponse オブジェクトをレンダされたテキストと ともに返します。

render() は render_to_response() の context_instance 引数に、使用させる RequestContext を渡した場 合と同じ動作をします。

redirect(to[, permanent=False], *args**kwargs)

引数として渡された適切な URL への HttpResponseRedirect を返します。引数には以下を取れます:

  • モデル: 渡されたモデルの get_absolute_url() 関数が呼ばれます。
  • urlresolvers.reverse() の引数としてリバース解決に使うことができる ビュー名。
  • リダイレクトのロケーションとなる URL

デフォルトでは一時的リダイレクトを発行します。 permanent=True を渡すと永続的なリダイレクトを発行します。

get_object_or_404(klass, *args, **kwargs)

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

get_list_or_404(klass, *args, **kwargs)

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

Posted in

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="">