我正在使用一些自定义中间件来检查用户的身份验证。这很好用,但我不想在每个url上运行这个中间件。在
Suggestions指向使用@decorator_from_middleware
在您希望中间件运行的每个视图之前,这将是理想的。我的一些观点应该是全球性的,另一些则是auth背后的观点。在
我似乎无法导入中间件来在视图文件中调用它。在
我的视图.py公司名称:
from myapp.middleware import *
@decorator_from_middleware(AuthCheckMiddleware)
def index(request):
return render(request, "index.html")
我的myapp.middleware.authCheck.py:
^{pr2}$我得到的错误是:
File "/vagrant/myapp/django-project/isadmin/web/views.py", line 93, in <module>
@decorator_from_middleware(AuthCheckMiddleware)
NameError: name 'AuthCheckMiddleware' is not defined
这是标准的Python行为。除非在的
__init__.py
中显式导入AuthCheckMiddlewaremyapp.中间件,它不会由from myapp.middleware import *
导入。在但你真的不该这么做。很少有好的理由去做
import *
;总是显式地导入您需要的东西。在另外请注意,Python样式是让模块具有小写的、带下划线的名称:它应该是auth_检查.py. 在
还要注意,Python并不要求每个类都在单独的文件中,所以可以使用myapp/中间件.py包含多个类,包括AuthCheckMiddleware。那么原始代码就可以工作了(尽管使用import*仍然不是一个好主意)。在
相关问题 更多 >
编程相关推荐