Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。
完成了订单基础模型,接下来是编写订单视图,订单页和订单支付。
① 订单视图
相对于之前的电商项目的订单视图Django实战-生鲜电商-订单支付,本次的更简单,在实现上也是直接从数据库中查询所有的订单。这样做有很大的一个缺点,对数据库查询性能要求更高和数据保密性差。
def index(request):
payinfos = Payinfo.objects.all()
context = {
'payinfos': payinfos
}
return render(request, 'payinfo/payinfo.html', context=context)
② 订单支付
从 Django 1.9 开始, 默认是已经配置的。
request.path
request.get_full_path
request.build_absolute_uri
def payinfo_order(request):
payinfo_id = request.GET.get('payinfo_id')
payinfo = Payinfo.objects.get(pk=payinfo_id)
buyed = PayinfoOrder.objects.filter(buyer=request.user, payinfo=payinfo, status=2)
if buyed:
return redirect(reverse("payinfo:download_payinfo")+"?payinfo_id=%s" % payinfo.pk)
order = PayinfoOrder.objects.create(buyer=request.user, amount=payinfo.price, payinfo=payinfo, status=1)
context ={
'payinfo': payinfo,
'order': order,
'notify_url': request.build_absolute_uri(reverse('payinfo:notify_view')),
'return_url': request.build_absolute_uri(reverse('payinfo:download_payinfo')+"?payinfo_id=%s" % payinfo.pk)
}
return render(request, 'payinfo/create_order.html', context=context)