如果我导入django的内置登录视图,如下面的代码
from django.conf.urls import patterns, include, url
from django.contrib.auth.views import login
urlpatterns = patterns('',
url(r'login/$', login, name='login'),
)
Run Code Online (Sandbox Code Playgroud)
每件事都运作良好,但如果我将以下列方式包括它
from django.conf.urls import patterns, include, url
from django.contrib import auth
urlpatterns = patterns('',
url(r'login/$', auth.views.login, name='login'),
)
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
Exception Value: 'module' object has no attribute 'views'
Run Code Online (Sandbox Code Playgroud)
什么真正困扰我是在另一个项目我导入它的第二种方式,它工作正常.有谁知道这里发生了什么?
vik*_*kki 12
在第二个项目中,您可能已经auth.views在调用之前导入了模块auth.views.login.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>
Run Code Online (Sandbox Code Playgroud)
第一次导入甚至不必提及login视图.这也行.
>>> from django.contrib.auth.views import logout
...
#then import auth.views.login
Run Code Online (Sandbox Code Playgroud)
以下不会,因为python不知道该views模块,因为它没有注册auth.__init__.py
>>> from django.contrib import auth
>>> auth.views.login
...
AttributeError: 'module' object has no attribute 'views'
Run Code Online (Sandbox Code Playgroud)