【问题标题】:I just to fetch the updated status我只是为了获取更新的状态
【发布时间】:2021-03-12 04:38:47
【问题描述】:

嘿,我创建了一个系统,付款后它会显示 PAID。我有一个继续付款的按钮,但是当付款成功时,该按钮将变为隐藏状态。就像状态已付款一样,该按钮将被隐藏

这是我的model.py

class Order(models.Model):
    product = models.ForeignKey(
        Product, on_delete=models.CASCADE, related_name="product")
    customer = models.ForeignKey(Customer, on_delete=models.CASCADE)
    quantity = models.IntegerField(default=1)
    fname = models.CharField(max_length=100, null=True)
    address = models.CharField(max_length=1000, null=True)
    phone = models.CharField(max_length=12, null=True)
    price = models.IntegerField()
    date = models.DateField(datetime.datetime.today, null=True)
    status = models.CharField(
        max_length=100, blank=True, null=True, default="Unpaid")
    payment_method = models.ForeignKey(
        PaymentMethod, on_delete=models.CASCADE, blank=True, null=True)

    total = models.IntegerField(null=True)

这是我的 Views.py :

def get(self, request, id):
        user_orders = Order.objects.get(pk=id)
        args = {'user_orders': user_orders}
        return render(self.request, 'Home/invoice.html', args)

    def post(self, request, *args, **kwargs):
        customer = Customer.objects.get(id=request.session['customer']['id'])
        user_orders = Order.objects.get(pk=kwargs['id'])
        total = user_orders.total
        balance = request.session['customer']['coin']

        if balance >= total:
            balance = balance - total
            customer.coin = balance
            customer.save()

            Order.objects.filter(pk=kwargs['id']).update(
                status='PAID'
            )

            request.session['customer']['coin'] = balance
            request.session.save()

            return redirect('/orders')

        return HttpResponse("Insufficient Balance")

【问题讨论】:

标签: python django


【解决方案1】:

我建议您将变量传递到模板中,如 this thread 中所引用的那样。

因此您可能需要按如下方式更改视图:

# the original one
return redirect('/orders')

# the new one
context = {'payment': 'successful' }
return render(requset,'whatever_template.html', context)

然后在你的模板中做这样的事情:

{% if payment != 'successful' %}
  <button type="submit">Submit!</button>
{% endif %}

这里的逻辑是只在支付未成功时才显示按钮。这是 Django 的 Jinja 模板语法(更多 here),可以启用条件等功能。

这是我能想到的最基本的答案。如果带有属性的render 不能满足您的需求,我建议您深入了解其他功能,例如HttpResponseTemplateResponse

编辑我真的认为如果你想在不刷新的情况下更新模板,你应该使用TemplateResponse,虽然我不太确定。您可以在here 找到它们之间的比较以及更多在线示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-31
    • 1970-01-01
    • 2021-01-30
    • 2020-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多