You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django餐厅项目提交POST新增菜谱后未在菜单页同步渲染问题求助

问题排查与修复方案

1. 基础校验

首先确认数据存储逻辑是否正常:提交菜谱后手动刷新当前录入页,检查是否能看到新增内容

  • 刷新后可见:说明数据存储正常,问题出在跳转规则或菜单页的视图/URL配置
  • 刷新后不可见:优先排查表单验证逻辑,可在视图中加入错误打印定位问题

2. 核心问题修复

你当前的提交逻辑跳转目标为录入页,若公共菜单是独立页面,按以下步骤修改即可:

第一步:编写公共菜单视图

# views.py 新增公共菜单逻辑
def public_menu(request):
    # 每次访问重新查询全量菜谱,保证数据最新
    recipe_menu = Recipe.objects.all().order_by('-id') # 按ID倒序,新菜品排在最前
    return render(request, 'inventory/menu.html', {'recipe_menu': recipe_menu})

第二步:配置URL路由

# urls.py
from django.urls import path
from . import views

urlpatterns = [
    # 菜谱录入页路由
    path('recipe/entry/', views.recipeEntry, name='recipe_entry'),
    # 公共菜单页路由
    path('menu/', views.public_menu, name='public_menu'),
]

第三步:修改录入页跳转规则

# 修改views.py 中的recipeEntry视图
def recipeEntry(request):
    recipe_menu = Recipe.objects.all()
    form = RecipeForm()

    if request.method == 'POST':
        form = RecipeForm(request.POST)
        if form.is_valid():
            form.save()
            # 提交成功直接跳转到公共菜单页,即可看到最新内容
            return redirect("public_menu")
        # 表单验证失败时留在当前页,可自行添加错误提示逻辑
        else:
            print(form.errors)

    context = {'form':form, 'recipe_menu':recipe_menu}
    return render(request, 'inventory/recipe.html', context)

第四步:公共菜单页模板示例

<!-- inventory/menu.html -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>餐厅菜单</title>
</head>
<body>
    <h1>当期菜单</h1>
    {% for rec in recipe_menu %}
    <div style="margin: 15px 0;">
        <p>菜品名称: {{rec.name}}</p>
        <p>所需食材: {{rec.ingredients}}</p>
    </div>
    {% empty %}
    <p>暂未上架菜品</p>
    {% endfor %}
</body>
</html>

3. 可选优化

如果需要录入后不跳转直接在录入页显示新菜品,可给Recipe模型增加时间字段实现更清晰的排序:

# models.py 修改
class Recipe(models.Model):
    name = models.CharField(max_length=50)
    ingredients = models.CharField(max_length=500)
    create_time = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.name

查询时使用Recipe.objects.all().order_by('-create_time')即可按上架时间倒序排列。

内容的提问来源于stack exchange,提问作者marv8569

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 04:24:03