Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Django 2.0运行Django REST框架示例_Python_Django_Rest_Django Rest Framework - Fatal编程技术网

Python 使用Django 2.0运行Django REST框架示例

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

我试图将上面的示例改编为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,
    # 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)),
]
但是,要使您的示例按预期运行,肯定需要有数据库设置和用户记录;-)