我正在Google App Engine上的Django项目上工作。我有一个类似的网址:
http://localhost:8080/[company]/projects/project
请注意,这[company]是我的urls.py中定义的URL参数,例如:
[company]
(r'(^[a-zA-Z0-9-_.]*)/projects/project/(\d*)', 'projects.views.project_form'),
我想[company]从中间件获取值,在中间件中将GAE数据存储名称空间设置为该[company]值。
是否可以[company]从process_request中间件类方法中传递的请求对象中获取参数?
process_request
如果您使用process_view中间件,则可以访问views参数,因此可以访问公司价值。看一下函数的定义:
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/zh/1.0/chapter08/#cn38
尤其
这个[命名的url组]完成与上一个示例完全相同的功能,只是有一个微妙的区别:捕获的值作为关键字参数而不是位置参数传递给视图函数。