python - 在 Django 中应用折扣后如何计算总数?
问题描述
我想在应用折扣后计算总金额。为此,我制作了 cart.py。但是当我从模板.html 中的 cart.py 调用函数时。它既不显示折扣后的总金额也不显示折扣百分比。
在购物车应用中创建的cart.py
from decimal import Decimal
from django.conf import settings
from shop.models import Product
from coupons.models import Coupons
class Cart(object):
def __len__(self):
return sum(item['quantity'] for item in self.cart.values())
def get_total_price(self):
return sum(Decimal(item['price']) * item['quantity'] for item in self.cart.values())
def clear(self):
del self.session[settings.CART_SESSION_ID]
self.session.modified = True
@property
def coupon(self):
if self.coupon_id:
return Coupons.objects.get(id=self.coupon_id)
def get_discount(self):
if self.coupon:
return (self.coupon.discount / Decimal('100')) * self.get_total_price()
def get_total_price_after_discount(self):
return self.get_total_price() - self.get_discount()
模板.html
<tr class="gray2">
<td colspan="2"> coupon ({{discount}}) % off</td>
<td colspan="3"></td>
<td class="num neg"> {{cart.get_discount|floatformat:"2"}}</td>
</tr>
<tr class="total">
<td>Total</td>
<td colspan="4"></td>
<td class="num">{{cart.get_total_price_after_discount|floatformat:"2"}}</td>
</tr>
</table>
<div class="divo">
<p>
coupon code to apply discount
</p>
<form action="{% url 'coupons:apply' %}" method="post">
{{coupon_apply_form}}
{% csrf_token %}
<input type="submit" value="apply" class="btn">
</form>
</div>
视图.py
@require_POST
def coupon_apply(request):
now = timezone.now()
form = CouponApplyForm(request.POST)
if form.is_valid():
code = form.cleaned_data['code']
try:
coupon = Coupons.objects.get(code__iexact=code,
valid_form__lte=now,
valid_to__gte=now,
active=True)
request.session['coupon_id'] = coupon.id
except Coupons.DoesNotExist:
request.session['coupon_id'] = None
return HttpResponseRedirect(reverse("cart"))
这部分 template.html 未显示。请如果有人可以在这方面帮助我。
笔记:
coupon_apply_form = CouponApplyForm()
context={'cart':cart,'coupon_apply_form':coupon_apply_form}
我已经在购物车应用程序的 view.py 中写了这个。
解决方案
您不能从模板中调用函数。在您的视图中进行计算,并将新的总数保存到一个变量中,然后通过上下文将其传递给您的模板。如果您在我所描述的实际编码方面确实需要帮助,请告诉我。然而,这是一个重复的问题。
编辑:我建议将来提出描述您遇到的问题的问题,而不是使用仅与您的问题完全相同的细节。作为一个例子,我会问(从 Django 模板调用函数不起作用),尽管它看起来像一个“简单”或“愚蠢”的问题,但它非常简洁。希望这对您将来有所帮助!:)
推荐阅读
- xpath - XPATH 选择所有以下兄弟姐妹以及匹配的元素
- mongodb - 在 MongoDB 中存储 @discordjs/voice VoiceChannel
- javascript - 猫鼬:在孩子更新时更新父母
- html - Bootstrap:在手机上,右侧有空白,导航栏不完整
- javascript - why my localstorage is lagged and doesn't catch up?(react.js)
- three.js - Transparency texture display incorrectly
- java - AWS ProfileCredential 提供 AWS SDK1 VS AWS SDK 2 JAVA
- excel - VBA 将工作表上的跟踪号链接到网站
- python - 符号搜索:如何排除 html/js 文档文件或仅包含 `.py` 模块?
- mysql - 在 sql 中将分层数据作为列查看