我有一个Django应用程序设置如下:
MyApp
CustomAdmin
urls
models
views
MainApp
settings
urls
wsgi
SomeOtherApp
admin
models
views
现在,在我的MainApp.urls
中,我设置了以下url:
在CustomAdmin
中,我希望有一个单独的机制来检查请求是否由superuser
发出,而不管关联的视图是什么。如果请求是由超级用户发出的,则该请求应该由相关联的view函数处理,否则将抛出403或类似错误。在
我在Laravel中使用了类似的东西,如下所示
Route::group(
array(
'before' => 'auth.admin',
'prefix' => 'api/admin'
),
function(){
....
});
我不确定Django是否存在这样的机制。如果有,我该怎么办?在
Fromccbv.co.uk和FromDjango Class-bases views docs,
dispatch()
是类基视图中调用的第一个方法。在查看类工作流
请记住,所有泛型视图都继承视图类
中间件是一个很好的解决方案,但是如果您不需要预处理每个请求,您可以使用访问mixin。在
正如我前面所说,
dispatch()
是第一个执行的方法,因此您可以重写它来授予或拒绝对视图的访问。在以下是
dispatch
默认代码:您可以编写
^{pr2}$mixin
类:然后可以在视图中使用它。让我们假设一个
ListView
:我希望你觉得这个有用。在
我认为不可能在包含其他模式的url模式上定义它(稍后将对此进行更多测试),但至少可以在} 修饰符。在
CustomAdmin.urls
中使用^{您可以编写一个middleware,允许您在视图中处理请求之前对其进行一些处理。在一个名为
middleware.py
的文件中,输入:并将中间件添加到您的
^{pr2}$settings.py
。它应该与此类似:相关问题 更多 >
编程相关推荐