format html floatformat django python

  • 开发python项目时,使用django框架,前台的数值有时需要format, 每3位加逗号之类的。
  • 只需要以下两行就搞定
  • {% load humanize %}
    {{ value|floatformat:1|intcomma }}


### 使用 PythonDjango 构建海底捞餐厅点餐系统 #### 创建项目结构 为了创建一个完整的海底捞点餐系统,首先需要初始化一个新的 Django 项目并设置必要的应用程序。 ```bash django-admin startproject hotpot_order_system cd hotpot_order_system python manage.py startapp orders ``` #### 定义模型 在 `orders/models.py` 文件中定义数据库表来存储菜品信息以及订单详情: ```python from django.db import models class Dish(models.Model): name = models.CharField(max_length=255) price = models.DecimalField(decimal_places=2, max_digits=8) def __str__(self): return self.name class OrderItem(models.Model): dish = models.ForeignKey(Dish, on_delete=models.CASCADE) quantity = models.IntegerField(default=1) class Order(models.Model): items = models.ManyToManyField(OrderItem) total_price = models.DecimalField(decimal_places=2, max_digits=8) def calculate_total(self): self.total_price = sum(item.dish.price * item.quantity for item in self.items.all()) self.save() ``` #### 配置URL路由 编辑项目的主 URLconf (`hotpot_order_system/urls.py`) 来映射视图函数到特定路径上: ```python from django.urls import path, include urlpatterns = [ ... path('orders/', include('orders.urls')), ] ``` 接着,在应用目录下新建文件 `orders/urls.py`, 添加如下内容以处理不同页面请求: ```python from django.urls import path from .views import * app_name = 'orders' urlpatterns = [ path('', MenuView.as_view(), name='menu'), path('order/<int:pk>/', OrderDetailView.as_view(), name='order_detail') ] ``` #### 实现视图逻辑 编写类基底视图 (CBV) 或者基于函数的视图 (FBV),这里采用 CBV 方式实现菜单展示和下单功能。修改 `orders/views.py` 如下所示: ```python from django.views.generic.list import ListView from django.views.generic.detail import DetailView from .models import Dish, Order, OrderItem from django.shortcuts import redirect from django.contrib.auth.mixins import LoginRequiredMixin class MenuView(ListView): model = Dish template_name = "orders/menu.html" def post(self, request, *args, **kwargs): selected_dishes_ids = list(map(int, request.POST.getlist('selected_items'))) order = Order.objects.create() for id_ in selected_dishes_ids: dish = Dish.objects.get(id=id_) OrderItem.objects.create(order=order, dish=dish).save() order.calculate_total() return redirect(f'/orders/order/{order.id}/') class OrderDetailView(LoginRequiredMixin, DetailView): model = Order template_name = "orders/order_details.html" login_url='/accounts/login/' ``` 上述代码实现了两个主要的功能:一个是显示所有可选菜品列表;另一个是在提交选择后的菜品后自动计算总价并将新订单保存至数据库[^1]。 #### 设计模板 最后一步是设计前端界面。可以分别创建 HTML 模板用于渲染菜单页(`templates/orders/menu.html`) 及 订单详情页(`templates/orders/order_details.html`). 这里仅给出部分片段作为示范: **Menu Page Snippet** ```html <form method="POST"> {% csrf_token %} <ul> {% for dish in object_list %} <li>{{dish.name}} - ¥{{dish.price}} <input type="checkbox" value="{{dish.id}}" name="selected_items"/> </li> {% endfor %} </ul> <button type="submit">Submit Order</button> </form> ``` **Order Details Page Snippet** ```html <h2>Your Order Summary:</h2> <table border="1px solid black"> <tr><th>Dish Name</th><th>Quantity</th><th>Price</th></tr> {% for item in object.items.all %} <tr> <td>{{item.dish.name}}</td> <td>x {{item.quantity}}</td> <td>¥{{item.dish.price|floatformat:"2"}} each</td> </tr> {% endfor %} <tr style="font-weight:bold;"> <td colspan="2">Total Amount Due:</td> <td>¥{{object.total_price|floatformat:"2"}}</td> </tr> </table> <a href="{% url 'home' %}">Back to Home</a> ``` 通过以上步骤就可以完成一个简单的海底捞在线点餐系统的搭建工作了。当然实际生产环境中还需要考虑更多细节比如用户认证授权机制、支付接口集成等额外特性.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值