当前位置: 首页 > 面试题库 >

Django:如何在中间件类中访问URL regex参数?

林英锐
2023-03-14
问题内容

我正在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中间件类方法中传递的请求对象中获取参数?


问题答案:

如果您使用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图书中的更多信息,它们说明了url中已命名和未命名组如何在您的视图中转换为args和kwargs:

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

尤其

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



 类似资料:
  • 问题内容: 我想爱Django,但是开发环境中的静态文件和媒体文件业务让我发疯。请把我从愚蠢中解救出来。 我在开发机器上。我的项目目录的根目录中有文件夹。 在settings.py我有:和。 在我有: 但是我获取媒体文件的唯一方法是通过引用/media/media/例如 。 我期望(并且想要) 谁能告诉我这里发生了什么,并给我一个设置媒体文件处理的简单方法吗? 非常感谢你。 但这留下了两个问题:

  • 问题内容: C和派生函数的入口点函数具有和(和)参数,但是Swift没有合适的参数:顶级代码只是代码,并且没有参数。 在Swift程序中,如何访问等价的? 问题答案: 进程 刚刚重命名为 CommandLine (自Swift 3.0 8月4日快照以来) (由于某些原因,变更日志中未提及)

  • 我有一个react组件,它加载在路由上 我需要从components构造函数中的url访问一个参数 我该怎么做呢? 我可以这样访问它吗:

  • 我有一个zip文件“items.zip”。 在这个zip-File中有不同的类,其中一些对我有用,而另一些则不是。 圆圈类有一个construcor和一个paint方法。 圆圈ButYoucantDrawit。类具有损坏的构造函数。 在启动主程序之前,我想访问项目。zip,检查它们是否可用,然后尽可能地使用有用的。最好的方法是什么? 到目前为止,我已经尝试了9次,但没有一次有意义。我如何才能做到最

  • 问题内容: 我的POST方法看起来像这样: 当我在Netbeans中创建Jersey客户时,调用post方法的方法如下所示: 运行此测试时: 它在服务器中提供以下输出: 我需要更改什么才能使参数给出正确的值? 问题答案: 你的方法应该接受JSON对象而不是字符串。Jersey使用JAXB支持封送和拆封JSON对象(有关详细信息,请参阅jersey文档)。创建一个类似的类: 然后,你的方法将如下所示

  • 问题内容: 这是我的一部分: This is the item reader: 这是Spring Batch在运行时所说的: 怎么了 在Spring 3.0中,我在哪里可以了解有关这些机制的更多信息? 问题答案: 如前所述,你的阅读器需要进行“逐步”调整。你可以通过注释完成此操作。如果你将该注释添加到阅读器,则它应该对你有用,如下所示: 该范围默认情况下不可用,但是如果你正在使用XML名称空间,则