我正在研究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
参数?
答案 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]完成与前一个示例完全相同的操作,但有一个细微差别:捕获的值作为关键字参数而不是位置参数传递给视图函数。