简体   繁体   English

如何在Django Rest Framework中序列化用户模型

[英]How do you Serialize the User model in Django Rest Framework

Am trying to familiarize myself with the Django Rest Framework. 我正在尝试使自己熟悉Django Rest Framework。 Tried an experiment to list the users I created but the serializer always returns blank objects. 尝试进行实验以列出我创建的用户,但是序列化程序始终返回空白对象。 Here's my code: 这是我的代码:

serializers.py serializers.py

from rest_framework import serializers
from django.contrib.auth.models import User


class CurrentUserSerializer(serializers.Serializer):
    class Meta:
        model = User
        fields = ('username', 'email', 'id')

urls.py urls.py

from django.urls import include, path
from administration import views
from rest_framework.routers import DefaultRouter


router = DefaultRouter()
router.register(r'admin', views.CurrentUserViewSet)


urlpatterns = [
    path('', include(router.urls)),
]

views.py views.py

from django.shortcuts import render
from django.contrib.auth.models import User
from administration.serializers import CurrentUserSerializer
from rest_framework import viewsets

# Create your views here.

class CurrentUserViewSet(viewsets.ReadOnlyModelViewSet):
    queryset = User.objects.all()
    serializer_class = CurrentUserSerializer

Rest of the code is pretty much boilerplate based on the DRF tutorial. 其余代码几乎是基于DRF教程的样板。

The result I'm getting is blank objects for every user. 我得到的结果是每个用户的空白对象。 The number of blanks grows and shrinks if I add/remove a user, which tells me I'm at least partially hooked up to the User model. 如果我添加/删除用户,则空白的数量会增加和减少,这表明我至少部分地依赖于User模型。 Example below: 下面的例子:

[{},{},{}]

What I'm expecting is something like: 我期望的是这样的:

[{"username": "jimjones", "email": "jim&jones.com", "id": 0},{...}]

Any help appreciated. 任何帮助表示赞赏。

Solved. 解决了。 Was a typo. 是一个错字。 In serializers.py the class should be using "serializers.ModelSerializer" and not "serializers.Serializer". 在serializers.py中,该类应使用“ serializers.ModelSerializer”而不是“ serializers.Serializer”。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM