4

私がビューを持っているとしましょう:

def pony_view(request, arg1, arg2):
    ... Make ponies, etc ...

そしてミドルウェア:

class MyMiddleware(object):
    def process_request(request):
        # How do I access arg1, arg2 here?

もちろん、arg1 と arg2 は、urls.py を使用して URL パラメーターを介して渡されます。

これを行う必要があるのは、ビュー関数を実行する前に request.session に何かを追加したいからです (ただし、URL から必要なもの)。

4

1 に答える 1

11

メソッドを実装する必要がありますprocess_view

次の署名があります。

process_view(self, request, view_func, view_args, view_kwargs)

ビュー関数が呼び出される前に実行されます。

process_view()Django がビューを呼び出す直前に呼び出されます。NoneまたはHttpResponseオブジェクトを返す必要があります。が返された場合None、Django はこのリクエストの処理を続行し、他のprocess_view()ミドルウェアを実行してから、適切なビューを実行します。オブジェクトが返されたHttpResponse場合、Django は他のリクエスト、ビュー、例外ミドルウェア、または適切なビューを呼び出しません。を返しますHttpResponse。応答ミドルウェアは、すべての応答で常に呼び出されます。

arg1次に、次の方法でアクセスできるはずですarg2

class MyMiddleware(object):
    def process_view(self, request, view_func, view_args, view_kwargs):
        arg1, arg2 = view_args[:2]
于 2010-02-04T01:53:56.057 に答える