You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在UserSerializer中添加显式字段?及Django URL运行错误排查

问题解答

一、在Django REST Framework的UserSerializer中添加显式字段

在ModelSerializer的Meta类中,通过fields属性指定需要显式包含的字段即可,具体操作如下:

  1. 注意使用复数形式的fields(不要写成单数field,这是高频拼写错误);
  2. 按需指定字段:
    • 要包含模型所有字段,用fields = "__all__";
    • 仅需部分字段,直接列出字段名列表,比如fields = ["id", "username", "email", "password"];
  3. 若要添加自定义字段(如用户全名),可在序列化器类中直接定义,示例代码:
from django.contrib.auth.models import User
from rest_framework import serializers

class UserSerializer(serializers.ModelSerializer):
    # 自定义字段
    full_name = serializers.SerializerMethodField()

    class Meta:
        model = User
        fields = ["id", "username", "email", "password", "full_name"]
        extra_kwargs = {"password": {"write_only": True}}

    def get_full_name(self, obj):
        return f"{obj.first_name} {obj.last_name}"

    def create(self, validated_data):
        user = User.objects.create_user(**validated_data)
        return user

二、修复URL与序列化器的运行错误

结合代码和错误信息,需修复两个核心问题:

1. 序列化器字段拼写错误

在serializers.py的UserSerializer.Meta中,你误写为单数field,需改为复数fields,修正后代码:

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ["id", "username", "password"]  # 改为复数fields
        extra_kwargs = {"password": {"write_only": True}}

    def create(self, validated_data):
        user = User.objects.create_user(**validated_data)
        return user

这个拼写错误会导致DRF无法识别序列化字段,直接引发运行异常。

2. URL路径缺少末尾斜杠

在urls.py中,"api/token/refresh"路径不符合Django URL规范,需添加末尾斜杠,修正后代码:

urlpatterns = [
    path('admin/', admin.site.urls),
    path("api/user/register/", CreateUserView.as_view(), name="register"),
    path("api/token/", TokenObtainPairView.as_view(), name="get_token"),
    path("api/token/refresh/", TokenRefreshView.as_view(), name="refresh"),  # 添加末尾斜杠
    path("api-auth/", include("rest_framework.urls")),
]

缺少斜杠会导致请求该路径时出现路由不匹配或重定向错误,规范的URL路径应以斜杠结尾。

内容的提问来源于stack exchange,提问作者user14714966

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 13:03:22