python - 为什么当bid = 3 且highest_bid = 2000 时print(bid > high_bid) 返回true?
问题描述
我在 Django 中制作了一个简单的表单,而不使用内置的 Django 表单。为了处理表单,我只是在 views.py 文件中使用 HTML/Django 模板和 Python。
我不明白为什么print(bid > highest_bid)
在以下情况下返回 True:
最高出价 = 2000.6
出价 = 3
Listing_detail.html
<form method="POST" action="{% url 'listing-detail' object.id %}">
{% csrf_token %}
<input type="hidden" name="highest_bid" value="{{ highest_bid }}">
<input type="number" step=".01" min="" placeholder="0.00" name="bid">
<button type="submit">Place bid</button>
</form>
视图.py
# place bid
highest_bid = request.POST.get("highest_bid", "") #2000.6
print(f'Highest = {highest_bid}')
bid = request.POST.get("bid", "") #3
print(f'bid = {bid}')
print(bid > highest_bid) # returns True
if 'bid' in request.POST and bid > highest_bid:
#bid = float(request.POST['bid'])
new_bid = Bids(bid_value=bid, bidder=self.request.user, item=item)
new_bid.save()
return redirect(reverse("listing-detail", args=listing_id))
这意味着投标被保存到数据库中。即使我试图只用这条线保存最高出价
if 'bid' in request.POST and bid > highest_bid:
解决方案
问题是您正在比较字符串而不是数字。为避免这种情况,您应该将变量转换为类似这样。
print(int(bid) > int(highest_bid)) or print(float(bid) > float(highest_bid))
尝试改变这一点
if 'bid' in request.POST and bid > highest_bid:
至
if 'bid' in request.POST and float(bid) > float(highest_bid):
推荐阅读
- node.js - npm WARN 在 openshift 集群上的节点 v14+ Nodejs 上已弃用
- apache-kafka - 在 Docker 环境中启动分布式 Kafka 连接后创建 Kafka 连接器
- javascript - useState 根本不更新数组
- amazon-web-services - 为什么 CDK 抱怨缺少公共子网组?
- java - 无法使用 Java 实现 Stack
- python-3.x - 条形图中不需要的间距
- python - 这个 python 代码有多安全,我应该运行它吗
- sql - Sql:合并具有相同id和多个属性的行
- sql - Postgresql:使用另一列的值更新文本列
- c# - 如何在 C# 中使用多线程进行批处理