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

时间:2012-08-02 10:16:11

标签: python django google-app-engine middleware urlconf

我正在研究Google App Engine上的Django项目。我有一个像:

的网址

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

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

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

我希望从中间件获取[company]的值,我将GAE数据存储名称空间设置为[company]值。

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

1 个答案:

答案 0 :(得分:5)

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

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

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

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

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

这里有一些来自django书的更多信息,关于你的网址中的命名和未命名组如何在你的视图中转换为args和kwargs:

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

尤其

  

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