If I import django's built in login view as in following code
from django.conf.urls import patterns, include, url
from django.contrib.auth.views import login
urlpatterns = patterns('',
url(r'login/$', login, name='login'),
)
every thing works fine, but if I'll include it in following way
from django.conf.urls import patterns, include, url
from django.contrib import auth
urlpatterns = patterns('',
url(r'login/$', auth.views.login, name='login'),
)
I get the following error
Exception Value: 'module' object has no attribute 'views'
what is really bothering me is in another project I am importing it the second way and it is working fine. Does anyone know what's going on over here?
In the second project you've probably already imported the auth.views
module before calling auth.views.login
. Python stitches your imported modules when it can.
For example, this will work
>>> 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>
The first import doesn't even have to mention the login
view. This will also work.
>>> from django.contrib.auth.views import logout
...
#then import auth.views.login
The following won't because python does not know of the views
module since it isn't registered in auth.__init__.py
>>> from django.contrib import auth
>>> auth.views.login
...
AttributeError: 'module' object has no attribute 'views'
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments