【问题标题】:Is there something between middleware and view in Django so that I can plug my code into?Django中的中间件和视图之间有什么东西可以插入我的代码吗?
【发布时间】:2011-01-14 09:58:27
【问题描述】:

middleware 和 view 之间有什么东西可以插入我的代码,还是我必须从 Django 子类化某些东西来提供这个功能?

让我先解释一下为什么我需要这个,也许你可以提出更好的解决方案。我想根据一些配置限制我的一些 url。和, - 我希望这个配置成为 url 配置的一部分 - 根据提供的配置,我想重定向等到其他视图。

我所说的“部分 url 配置”类似于以下内容。

url(r'^admin/blah/blah$', do_something, name='admin-blah-blah', {'security_level': 'very_secure', 'auth_method' : 'oauth', 'auth_url', 'http://www.foo.com'})

这似乎是应该由中间件完成的事情,但我不想用中间件来做这件事,原因有两个。 - 我不想维护单独的配置。 - 我不想再对 url 模式进行正则表达式匹配,url resolver 已经在这样做了

因此,如果我能在查看之前找到一种方法来插入一些功能并且可以达到提供的配置,那么它就解决了我的问题。

【问题讨论】:

    标签: django url-routing django-views django-middleware


    【解决方案1】:

    听起来您可以在视图上使用装饰器来做到这一点:

    @restrict_url(security_level='very_secure', auth_method='oauth', 
                  auth_url= 'http://www.foo.com')
    def my_view(request):
        ... etc ...
    

    您可以通过查看django.contrib.auth.decorators 中提供的内容来了解​​如何编写restrict_url 装饰器。

    【讨论】:

    • 这很优雅,我应该先阅读 django 文档 :) 感谢您的指出。
    猜你喜欢
    • 2023-04-03
    • 2012-10-18
    • 1970-01-01
    • 1970-01-01
    • 2021-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多