繁体   English   中英

如何将值/变量从一个 function 传递到 django 中的另一个 - 视图

[英]How to pass value/variable from one function to another in django - views

无法将变量从一个 function 传递到另一个。

@api_view(['GET'])
def UserList(request):
    loc = User.objects.all()
    latest_id = User.objects.latest('userid').userid  #want to pass this variable into DetailList function
    serializer = UserSerializer(loc, many=True)
    return Response(serializer.data)

@api_view(['GET'])
def DetailList(request):
    loc = Detail.objects.all()
    serializer = DetailSerializer(loc, many=True)
    return Response(serializer.data)

最后想使用该用户标识变量将数据添加到详细信息表中。

class UserAPIView(APIView):
    def post(self, request ):
        userid = request.data.get('userid')
        name = request.data.get('name')
        age = request.data.get('age')
        gender = request.data.get('gender')
        address = request.data.get('address')
        phone = request.data.get('phone')
        user_serializer = UserSerializer(data={"name": name, "age": age, "gender": gender})
        detail_serializer = DetailSerializer(data={"userid": userid,"address": address, "phone": phone})
        if user_serializer.is_valid(raise_exception=True):
            user_serializer.save()
        if detail_serializer.is_valid(raise_exception=True):
            detail_serializer.save()
        return Response({'status': 'Success'})

无法通过声明全局来传递变量数据,因为出现错误 Nulltype 是不可调用的。

我不知道如何将数据从一个视图传递到另一个视图,但我对 session 有一个想法,你可以用 session 做同样的事情

#set session 从视图

request.session['session_name'] = session_value

#从另一个角度获取 session

session_var = request.session.get('session_name')

函数本身是状态,这意味着每个 function 都有自己的上下文,并且它们之间不共享上下文。 您拥有的唯一“桥梁”(否则在前端保留一些数据)是使用 DB 或Django 会话,如先前答案中所述。 对于最后一个,这是一个示例:

@api_view(['GET'])
def UserList(request):
    loc = User.objects.all()
    latest_id = User.objects.latest('userid').userid  #want to pass this variable into DetailList function
    request.session['latest_id'] = latest_id  # here you set session var
    serializer = UserSerializer(loc, many=True)
    return Response(serializer.data)

@api_view(['GET'])
def DetailList(request):
    loc = Detail.objects.all()
    latest_id = request.session.get('latest_id')  # here you get session var
    serializer = DetailSerializer(loc, many=True)
    return Response(serializer.data)

暂无
暂无

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

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