Djangoショートカット関数
パッケージdjango.shortcuts
は、MVCの複数のレベルに「またがる」ヘルパー関数とクラスを収集します。 言い換えると、これらの関数/クラスは、便宜上、制御された結合を導入します。
render()
- render(request, template_name, context=None, content_type=None, status=None, using=None)
指定されたテンプレートを指定されたコンテキストディクショナリと組み合わせて、 HttpResponse オブジェクトとそのレンダリングされたテキストを返します。
TemplateResponse のコンストラクターは、 render()と同じレベルの利便性を提供するため、Djangoは TemplateResponse を返すショートカット関数を提供していません。
必須の引数
request
- この応答を生成するために使用される要求オブジェクト。
template_name
- 使用するテンプレートのフルネームまたはテンプレート名のシーケンス。 シーケンスが指定されている場合、存在する最初のテンプレートが使用されます。 テンプレートの検索方法の詳細については、テンプレート読み込みドキュメントを参照してください。
オプションの引数
context
- テンプレートコンテキストに追加する値のディクショナリ。 デフォルトでは、これは空の辞書です。 ディクショナリの値が呼び出し可能である場合、ビューはテンプレートをレンダリングする直前にそれを呼び出します。
content_type
- 結果のドキュメントに使用するMIMEタイプ。 デフォルトは
'text/html'
です。 status
- 応答のステータスコード。 デフォルトは
200
です。 using
- NS :setting: `NAME ` テンプレートのロードに使用するテンプレートエンジンの例。
例
次の例では、テンプレートmyapp/index.html
をMIMEタイプ application / xhtml + xml でレンダリングします。
この例は次と同等です。
redirect()
- redirect(to, *args, permanent=False, **kwargs)
渡された引数の適切なURLに HttpResponseRedirect を返します。
引数は次のようになります。
モデル:モデルの get_absolute_url()関数が呼び出されます。
ビュー名(おそらく引数付き): reverse()は、名前を逆解決するために使用されます。
リダイレクト場所としてそのまま使用される絶対URLまたは相対URL。
デフォルトでは、一時的なリダイレクトを発行します。
permanent=True
を渡して、永続的なリダイレクトを発行します。
例
redirect()関数はさまざまな方法で使用できます。
いくつかのオブジェクトを渡すことによって; そのオブジェクトの get_absolute_url()メソッドが呼び出され、リダイレクトURLがわかります。
ビューの名前と、オプションでいくつかの位置引数またはキーワード引数を渡すことによって。 URLは、 reverse()メソッドを使用して逆解決されます。
リダイレクトするハードコードされたURLを渡すことによって:
これは完全なURLでも機能します。
デフォルトでは、 redirect()は一時的なリダイレクトを返します。 上記のすべてのフォームは、permanent
引数を受け入れます。 True
に設定すると、永続的なリダイレクトが返されます。
get_object_or_404()
- get_object_or_404(klass, *args, **kwargs)
- 特定のモデルマネージャーで get()を呼び出しますが、モデルの DoesNotExist 例外の代わりに Http404 を発生させます。
必須の引数
klass
- オブジェクトを取得する Model クラス、 Manager 、または QuerySet インスタンス。
**kwargs
- ルックアップパラメータ。
get()
およびfilter()
で受け入れられる形式である必要があります。
例
次の例では、MyModel
から主キーが1のオブジェクトを取得します。
この例は次と同等です。
最も一般的な使用例は、上記のように Model を渡すことです。 ただし、 QuerySet インスタンスを渡すこともできます。
上記の例は、次のことを行うのと同等であるため、少し工夫されています。
ただし、queryset
変数が別の場所から渡された場合に便利です。
最後に、 Manager を使用することもできます。 これは、たとえばカスタムマネージャーがある場合に役立ちます。
関連マネージャーを使用することもできます。
注:get()
と同様に、複数のオブジェクトが見つかった場合、 MultipleObjectsReturned 例外が発生します。