![](/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.