0

私は2つの類似した機能を持っていますが、同じかどうか疑問に思いましdictadd_csrfか?

どちらもテンプレート内の変数に関連する値を返しますか?

def main(request):
    """Main listing."""
    forums = Forum.objects.all()
    return render_to_response("forum/list.html", dict(forums=forums, user=request.user))

def forum(request, pk):
    """Listing of threads in a forum."""
    threads = Thread.objects.filter(forum=pk).order_by("-created")
    threads = mk_paginator(request, threads, 20)
    return render_to_response("forum/forum.html", add_csrf(request, threads=threads, pk=pk))
4

2 に答える 2

3

add_csrf()dictを返す関数です。これは、リクエスト引数とともにcsrfトークンを追加するために使用されます。

from django.core.context_processors import csrf

def add_csrf(request, **kwargs):
    """
        Add CSRF to dictionary.
    """
    d = dict(user=request.user, **kwargs)
    d.update(csrf(request))
    return d

dict()dictを作成するために使用されるPython組み込み関数はどこにありますか

于 2013-02-18T11:55:01.120 に答える
0

すこし。

dict()は組み込みのPython関数(またはおそらくクラス-Pythonの詳細についてはあまり詳しくありません)であり、名前付き引数を受け入れ、Pythonディクショナリを返します。

2番目の引数としてrender_to_response辞書(またはDjangoコンテキストオブジェクトですが、辞書でもかまいません)を期待しているように、dict()そこで使用できます。辞書リテラルも同様に使用できます。

render_to_response("forum/list.html", {"forums":forums, "user":request.user})

Djangoのドキュメント参照が見つからないadd_csrfので、CSRF関連の処理を行うために誰かが作成したヘルパー関数だと思います。(@CrazyShezyは、テンプレートに渡されたコンテキストにCSRFトークンを追加することに注意しています。)

その結果は2番目の引数としてに渡されるためrender_to_response、ディクショナリ(またはDjangoコンテキストオブジェクト)も返す必要があります。

于 2013-02-18T11:56:22.707 に答える