2016-01-04 3 views
1

Я изучаю как Django, так и структуру Django REST. У меня была эта ошибка раньше и исправлена. Теперь эта проблема снова поднимает голову.Django Rest framework authtoken 'module' объект не имеет атрибутов '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.

+0

Я обновил свой ответ. Это не работает для вас? – masnun

ответ

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 

затем использовать его в привязок:

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

Уход за пояснением? Документ использует один и тот же синтаксис: http://www.django-rest-framework.org/api-guide/authentication/ – masnun

+0

Не похоже, что достаточно для OP ;-) И, конечно же, он тоже был опущен! – masnun

Смежные вопросы