【发布时间】:2021-01-31 19:34:21
【问题描述】:
我正在使用 Django 构建一个数字电子商务平台。当我的客户为数字产品付款时,我希望在付款后立即下载数字产品。因此,当他们完成付款后,他们会自动获得下载的文件。
现在付款后,我将返回主页并成功付款。但是,我不想渲染回主页,而是希望在付款后下载文件,所以我想渲染成类似我return redirect( {{item.file.url}} ) 而不是return redirect("/" ) 的东西(参见视图的最后一行)。我在 Views and Models 中的代码如下:
观看次数
class PaymentView(View):
def get(self, *args, **kwargs):
order = Order.objects.get(user=self.request.user, ordered=False)
context = {
'order': order
}
return render(self.request, 'dashtemplates/payment.html', context)
def post(self, *args, **kwargs):
order = Order.objects.get(user=self.request.user, ordered=False)
token = self.request.POST.get('stripeToken')
amount = int(order.get_total() * 100)
try:
charge = stripe.Charge.create(
amount=amount,
currency="usd",
source=token
)
#create payment
payment = Payment()
payment.stripe_charge_id = charge['id']
payment.user = self.request.user
payment.amount = order.get_total()
payment.save()
#assign the payment to the order
order_items = order.items.all()
order_items.update(ordered=True)
for item in order_items:
item.save()
order.ordered = True
order.payment = payment
order.save()
messages.success(self.request, "Your order was succesful!")
return redirect("/" )
模型
class Item(models.Model):
title = models.CharField(max_length=100)
price = models.FloatField()
category = models.CharField(choices=CATEGORY_CHOICES, max_length=20)
slug = models.SlugField()
description = models.TextField()
image = models.ImageField()
file = models.FileField()
【问题讨论】: