Django: How to access URL regex parameters inside a middleware class?

前端 未结 1 425
深忆病人
深忆病人 2020-12-20 18:06

I am working on a Django project on Google App Engine. I have a URL like:

http://localhost:8080/[company]/projects/project

Note that [comp

相关标签:
1条回答
  • 2020-12-20 18:51

    If you are using the process_view middleware, you will have access to the views arguments and therefore the company value. Have a look at the function's definition:

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

    view_args is a list of positional arguments that will be passed to the view, and view_kwargs is a dictionary of keyword arguments that will be passed to the view.

    so you should just be able to grab it from there, something like:

    def process_view(self, request, view_func, view_args, view_kwargs):
        company = view_kwargs.get('company', None)
    

    Here's some more info from the django book on how the named and unnamed groups in your urls translate to args and kwargs in your view:

    http://www.djangobook.com/en/1.0/chapter08/#cn38

    particularly

    This [named url groups] accomplishes exactly the same thing as the previous example, with one subtle difference: the captured values are passed to view functions as keyword arguments rather than positional arguments.

    0 讨论(0)
提交回复
热议问题