1

テンプレートで使用する設定から値を渡すために、context_processor で関数を定義しています。では、何が正しい方法であり、さらに重要なことに、違いは何なのでしょうか?

def baseurl(request):
    return {'BASE_URL': settings.BASE_URL}

また

def baseurl(context):
    return {'BASE_URL': settings.BASE_URL}

私は常に最初のものを使用してきましたが、2番目のいくつかの例に出くわしました

4

2 に答える 2

2

django/template/context.pyから:

class RequestContext(Context):
    """
    This subclass of template.Context automatically populates itself using
    the processors defined in TEMPLATE_CONTEXT_PROCESSORS.
    Additional processors can be specified as a list of callables
    using the "processors" keyword argument.
    """
    def __init__(self, request, dict_=None, processors=None, current_app=None,
            use_l10n=None, use_tz=None):
        Context.__init__(self, dict_, current_app=current_app,
                use_l10n=use_l10n, use_tz=use_tz)
        if processors is None:
            processors = ()
        else:
            processors = tuple(processors)
        for processor in get_standard_processors() + processors:
            self.update(processor(request))

最後の 2 行が最も重要です。これは、引数に名前が付けられていないことを意味します。したがって、引数にどのように名前を付けるかは問題ではありません。

于 2013-02-08T12:57:44.710 に答える
1

この引数を自由に呼び出すことができますrequestが、最も一般的または明確です。Django ドキュメントから: https://docs.djangoproject.com/en/1.4/ref/templates/api/#writing-your-own-context-processors

コンテキスト プロセッサのインターフェイスは非常に単純です。これは、1 つの引数 HttpRequest オブジェクトを受け取り、テンプレート コンテキストに追加される辞書を返す単なる Python 関数です。

この引数contextに名前を付けることを妨げるものは何もありませんが、HttpRequest オブジェクトが渡されるため、誤解を招く可能性があります。

于 2013-02-08T12:55:31.997 に答える