首页
学习
活动
专区
圈层
工具
发布

Django实战-信息资讯-订单视图

Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。

完成了订单基础模型,接下来是编写订单视图,订单页和订单支付。

① 订单视图

相对于之前的电商项目的订单视图Django实战-生鲜电商-订单支付,本次的更简单,在实现上也是直接从数据库中查询所有的订单。这样做有很大的一个缺点,对数据库查询性能要求更高和数据保密性差。

代码语言:javascript
复制
def index(request):
    payinfos = Payinfo.objects.all()
    context = {
        'payinfos': payinfos
    }
    return render(request, 'payinfo/payinfo.html', context=context)

② 订单支付

Django:在模板中获取当前url信息,确保项目配置里的context_processors 包含django.template.context_processors.request。

从 Django 1.9 开始, 默认是已经配置的。

  • 获取当前位置:

request.path

  • 获取带有 querystring 的 URL:

request.get_full_path

  • 获取完全的绝对路径:

request.build_absolute_uri

代码语言:javascript
复制
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)
举报
领券