[英]How can I get value from one function in another function in Django, views()
[英]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.