Django Rest框架authtoken'模块'对象没有属性' views'

时间:2016-01-04 21:27:11

标签: python django django-rest-framework

我正在学习Django和Django REST框架。之前我有这个错误并修复它。现在,这个问题又重新出现了。

这是我在尝试获取身份验证令牌时遇到的错误:

  

'模块'对象没有属性' views'

这是我的urls.py

from django.conf.urls import include, url
import rest_framework
from rest_framework import authtoken
from . import views

urlpatterns = [
    url(r'^games/$', views.GameList.as_view()),
    url(r'^games/(?P<pk>[0-9]+)/$', views.GameDetail.as_view()),
    url(r'^users/$', views.UserList.as_view()),
    url(r'^users/(?P<pk>[0-9]+)/$', views.UserDetail.as_view()),
    url(r'^api-token-auth/', authtoken.views.obtain_auth_token),
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
]

不知何故,它无法找到authtoken.views。令人讨厌的是,这个工作正常,直到我用manage.py runserver重启。

2 个答案:

答案 0 :(得分:5)

它不起作用的原因 - authtoken是一个包 - 当你导入它时,它不包含你想要的东西 -

>>> from rest_framework import authtoken
>>> dir(authtoken)
['__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__']

您可以看到authtoken不包含任何有用的内容。但是,您感兴趣的视图实际上位于views模块中。

因此我们可以先将导入更改为:

from rest_framework.authtoken import views as authviews

然后在urlconf中使用它:

url(r'^api-token-auth/', authviews.obtain_auth_token),

答案 1 :(得分:0)

我正面临着同样的错误,但是我意识到下面的事情。

您需要将rest_framework.authtoken添加到INSTALLED_APPS, 并且不要忘记python manage.py migrate