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

Django DRF接口报错utilisateurs_serializer赋值前被引用如何解决?

错误根因

你在GET逻辑中仅当firstname请求参数存在时,才会对utilisateurs_serializer变量赋值,若请求未携带firstname参数,该变量未定义就被调用返回,直接触发变量引用前未赋值的报错。

修复方案

将序列化操作移到firstname判断分支外,不管是否执行筛选逻辑都完成序列化变量的赋值即可,修改后代码如下:

@api_view(['GET', 'POST', 'DELETE'])
def utilisateur_list(request):
    if request.method == 'GET':
        utilisateurs = Utilisateur.objects.all()
        
        firstname = request.GET.get('firstname', None)
        if firstname is not None:
            utilisateurs = utilisateurs.filter(firstname__icontains=firstname)
        # 序列化逻辑移到判断外统一执行
        utilisateurs_serializer = UtilisateurSerializer(utilisateurs, many=True)
        return JsonResponse(utilisateurs_serializer.data, safe=False)

    elif request.method == 'POST':
        utilisateur_data = JSONParser().parse(request)
        utilisateur_serializer = UtilisateurSerializer(data=utilisateur_data)
        if utilisateur_serializer.is_valid():
            utilisateur_serializer.save()
            return JsonResponse(utilisateur_serializer.data, status=status.HTTP_201_CREATED) 
        return JsonResponse(utilisateur_serializer.errors, status=status.HTTP_400_BAD_REQUEST)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 18:30:01