Python 使用Django 2.0运行Django REST框架示例
我试图将上面的示例改编为Django 2.0,但遇到了一个错误 首先,我使用django admin startproject rest\u示例创建了一个项目。我已将Python 使用Django 2.0运行Django REST框架示例,python,django,rest,django-rest-framework,Python,Django,Rest,Django Rest Framework,我试图将上面的示例改编为Django 2.0,但遇到了一个错误 首先,我使用django admin startproject rest\u示例创建了一个项目。我已将'rest\u framework'添加到settings.py中的INSTALLED\u APPS列表中,并添加了rest\u framework变量: REST_FRAMEWORK = { # Use Django's standard `django.contrib.auth` permissions, # o
'rest\u framework'
添加到settings.py中的INSTALLED\u APPS
列表中,并添加了rest\u framework
变量:
REST_FRAMEWORK = {
# Use Django's standard `django.contrib.auth` permissions,
# or allow read-only access for unauthenticated users.
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly'
]
}
这是我的修改后的url.py
:
from django.contrib import admin
from django.urls import path, include
from django.contrib.auth.models import User
from rest_framework import routers, serializers, viewsets
class UserSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = User
fields = ('url', 'username', 'email', 'is_staff')
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
router = routers.DefaultRouter()
router.register(r'users', UserViewSet)
urlpatterns = [
path('admin/', admin.site.urls),
path('api-auth/', include('rest_framework.urls'))
]
问题是,当我python manage.py runserver
并导航到localhost:8000
时,我会得到一个404:
类似地,如果我导航到localhost:8000/api auth/
,我会得到
为什么不起作用?我通过将urlpatterns
的定义更改为
urlpatterns = [
path('admin/', admin.site.urls),
]
urlpatterns += router.urls
并在运行服务器之前运行python manage.py migrate
。现在,如果我转到localhost:8000/users/
我会看到一个用户列表视图:
我已经运行了一次python manage.py createsuperuser来创建(虚拟)用户。或者,您可以通过以下方式将URL添加到它们自己的子路径:
urlpatterns = [
path('admin/', admin.site.urls),
path('api/', include(router.urls)),
]
但是,要使您的示例按预期运行,肯定需要有数据库设置和用户记录;-)