我的需求是这样的,我在页面A点击一个按钮。这个按钮的作用是把页面上的数据post到一个api地址B,与此同时跳转到页面C,我想在页面C显示我刚刚post过来的数据。
我在api视图里设计的是把这些数据保存到数据库的id为1的对象中。如果这个对象已经存在数据库中了,我就删掉这个对象,并新建一个id为1的对象,然后把post过来的数据存进去,以此达到我每次post都能够重置这行数据的目的,不然以前的数据会一直保留。
我的api视图里这样写的:
elif request.method == 'POST':
try: #若数据库中已有记录则修改,否则新建
data = Inheritinfo.objects.filter()[0]
except IndexError:
data = Inheritinfo(id=1)
else:
data.delete()
data = Inheritinfo(id=1)
serializer = InheritinfoSerializer(data, data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
而在页面C的视图里,我要取出这个id为1的对象,根据里面的数据做一些处理,然后返回数据到页面C上:
def result(request):
inherit_list = []
info = Inheritinfo.objects.filter()[0] #在这里报错了
inherit_list.append(info.bjcr_name)
inherit_list.append(info.po_name)
context={}
context["inherit_list"] = inherit_list
return render(request,"inherit-result.html",context)
而在取这条数据的时候报错Indexerror,应该是执行到这里的时候我在API视图里面把这条数据删掉,还没有新建,所以这里取不到。我需要刷新页面C后才正常显示。
我希望的顺序是:删掉这行数据--新建一行主键一样的数据--取出这行数据并渲染到页面C
而现在的顺序貌似是:删掉这行数据--取出这行数据--取不到而报错--新增这行数据
那么怎么才能达到我跳转到C的时候不报错,能够正常按我希望的顺序执行呢呢?
谢谢各位的回答,我暂时这样解决了......:
def result(request):
别笑我,新手暂时只能这样解决了,以后会学习更好的处理方法的= =