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



我正在谷歌应用引擎上进行Django项目。我有一个类似的URL:

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]的值。

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

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

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书中关于URL中的命名和未命名组如何在您的视图中转换为args和kwargs的更多信息:

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

特别是

这个[命名的url组]完成了与上一个示例完全相同的事情,但有一个细微的区别:捕获的值作为关键字参数而不是位置参数传递给视图函数。

最新更新