python - django如何控制语句的执行顺序?
本文介绍了python - django如何控制语句的执行顺序?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
我的需求是这样的,我在页面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):
try:
info = Inheritinfo.objects.filter()[0]
except IndexError:
return redirect(to='result')
别笑我,新手暂时只能这样解决了,以后会学习更好的处理方法的= =
这篇关于python - django如何控制语句的执行顺序?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文