![](/img/trans.png)
[英]Django Rest framework authtoken 'module' object has no attribute 'views'
[英]'module' object has no attribute 'views' django error
如果我导入django的内置登录视图,如下面的代码
from django.conf.urls import patterns, include, url
from django.contrib.auth.views import login
urlpatterns = patterns('',
url(r'login/$', login, name='login'),
)
每件事都运作良好,但如果我将以下列方式包括它
from django.conf.urls import patterns, include, url
from django.contrib import auth
urlpatterns = patterns('',
url(r'login/$', auth.views.login, name='login'),
)
我收到以下错误
Exception Value: 'module' object has no attribute 'views'
什么真的困扰我是在另一个项目我导入它的第二种方式,它工作正常。 有谁知道这里发生了什么?
在第二个项目中,您可能已经在调用auth.views.login
之前导入了auth.views
模块。 Python尽可能地缝合您导入的模块。
例如,这将起作用
>>> from django.contrib.auth.views import login #or from django.contrib.auth import views
>>> from django.contrib import auth
>>> auth.views.login
<function login at 0x02C37C30>
第一次导入甚至不必提及login
视图。 这也行。
>>> from django.contrib.auth.views import logout
...
#then import auth.views.login
以下不会因为python不知道views
模块,因为它没有在auth.__init__.py
注册
>>> from django.contrib import auth
>>> auth.views.login
...
AttributeError: 'module' object has no attribute 'views'
在第一次导入( from django.contrib.auth.views import login
)时,点语法遍历模块层次结构。 在urlpattern访问( auth.views.login
)中,点语法正在执行属性(即类)查找。 从我的shell_plus中,您可以看到“auth”没有views属性。
In [1]: from django.contrib import auth
In [2]: auth.<TAB FOR COMPLETION>
auth.BACKEND_SESSION_KEY auth.load_backend
auth.ImproperlyConfigured auth.login
auth.PermissionDenied auth.logout
auth.REDIRECT_FIELD_NAME auth.models
auth.SESSION_KEY auth.re
auth.authenticate auth.rotate_token
auth.forms auth.settings
auth.get_backends auth.signals
auth.get_permission_codename auth.tokens
auth.get_user auth.user_logged_in
auth.get_user_model auth.user_logged_out
auth.hashers auth.user_login_failed
auth.import_by_path
这就是为什么它会给你一个错误。 如果你在另一个项目/文件中尝试它,它真的不应该工作 - 除非你的其他项目的auth.__init__.py
自动加载它的子模块。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.