如何在HTML中展示Python写入数据库的RandomId?
如何在HTML页面展示数据库中存储的RandomId?
我看了你的代码,问题主要出在模板变量渲染语法错误和视图传递的数据不对这两点上,下面给你一步步修正:
第一步:修正视图代码(views.py)
你现在把所有订单对象传给了模板,但实际上我们只需要刚生成的那个RandomId就行,不用查询整个表。修改后的代码如下:
# 生成5位随机ID RandomId = get_random_string(length=5) # 创建订单对象并填充数据 customerOrder = CustomerOrder( Table_Num=Table_Num, Food=Food, Quantity=Quantity, Message=Message, RandomId=RandomId ) # 保存到数据库 customerOrder.save() # 直接把刚生成的RandomId传给模板,变量名保持为random_id return render(request, 'restaurants/customer_page.html', {'random_id': RandomId})
第二步:修正HTML模板代码
你用了错误的模板标签语法{{% random_id %}},变量渲染应该用双大括号{{ 变量名 }};另外按钮嵌套submit的写法容易触发重复行为,建议调整:
<button onclick="myFunction()" type="button">Place Order</button> <script> function myFunction() { alert("Order has been placed in the kitchen \n Your order ID is {{ random_id }}") } </script>
为什么这么改?
- 视图里:刚生成的RandomId已经存在于变量中,直接传递这个字符串给模板就好,没必要查询所有订单,既浪费性能又会导致模板拿到的是查询集而不是单个ID值。
- 模板里:
{{ ... }}是Django模板用来渲染变量的语法,{{% ... %}}是用来执行逻辑(比如循环、判断)的标签语法,别搞混了。 - 按钮部分:原来的
<button>嵌套<input type="submit">会导致点击时同时触发button的onclick和submit的默认提交(如果有表单的话),改成单一按钮并设置type="button"可以避免意外的表单提交行为。
内容的提问来源于stack exchange,提问作者Eve11
相关产品推荐
相关产品推荐

