/ / Django 2.0でDjango RESTフレームワークの例を実行する - python、django、rest、django-rest-framework

Django 2.0でDjango RESTフレームワークの例を実行する - python、django、rest、django-rest-framework

私はこの例を次のように適応しようとしています。 http://www.django-rest-framework.org/ Django 2.0に変更しましたが、私はエラーに遭遇しています。

まず、私は django-admin startproject rest_example。私は追加しました "rest_framework" 〜に INSTALLED_APPS リスト settings.py そして、 REST_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"
]
}

ここに私の適応です urls.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/、私は得る

ここに画像の説明を入力

なぜこれは機能しないのですか?

回答:

回答№1は1

私はこの問題を、 urlpatterns

urlpatterns = [
path("admin/", admin.site.urls),
]

urlpatterns += router.urls

また走っている python manage.py migrate サーバーを実行する前に今私が行ったら localhost:8000/users/ 私はユーザーリストビューを取得します:

ここに画像の説明を入力

どこで走ったの? python manage.py createsuperuser 一度(ダミー)ユーザーを作成します。


回答№2の場合は0

または、次の方法でURLを独自のサブパスに追加することもできます。

urlpatterns = [
path("admin/", admin.site.urls),
path("api/", include(router.urls)),
]

しかし、そうでなければ、データベースのセットアップとその中のユーザレコードを持つことは、あなたの例が期待どおりに機能するためには絶対必要です。