繁体   English   中英

'module'对象没有属性'views'django错误

[英]'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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM