Django:如何访问中间件类中的URL正则表达式参数?

Muh*_*mam 6 python django google-app-engine middleware urlconf

我正在研究Google App Engine上的Django项目.我有一个像这样的网址:

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

请注意,这[company]是我在urls.py中定义的URL参数,如:

(r'(^[a-zA-Z0-9-_.]*)/projects/project/(\d*)', 'projects.views.project_form'),

我想[company]从中间件获取值,我将GAE数据存储空间设置为[company]值.

是否可以[company]process_request中间件类方法中传递的请求对象中获取参数?

Tim*_*ony 5

如果您使用的是process_view中间件,则可以访问views参数,从而访问公司值.看看函数的定义:

def process_view(self, request, view_func, view_args, view_kwargs)
    ...
Run Code Online (Sandbox Code Playgroud)

view_args是将传递给视图的位置参数列表,view_kwargs是将传递给视图的关键字参数的字典.

所以你应该能够从那里抓住它,例如:

def process_view(self, request, view_func, view_args, view_kwargs):
    company = view_kwargs.get('company', None)
Run Code Online (Sandbox Code Playgroud)

以下是django书中有关如何将您网址中的已命名和未命名组转换为视图中的args和kwargs的更多信息:

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

尤其

这个[named url groups]完成与前一个示例完全相同的操作,但有一个细微差别:捕获的值作为关键字参数而不是位置参数传递给视图函数.