簡體   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