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

如何解决Django中访问restaurant/menu/时的页面未找到错误?

解决建议

问题1:访问 restaurant/menu/ 出现404错误

你当前的URL配置中,show_menu 的路径是 menu/<slug:menu_name_slug>/,这意味着它仅匹配带有slug参数的URL(比如 restaurant/menu/lunch/),而不匹配没有slug的 restaurant/menu/。

解决方法:

  • 如果需要展示所有菜单或默认菜单:在 restaurant/urls.py 中添加一个新的URL模式,对应不带slug的路径:

    path('menu/', views.all_menus, name='all_menus'),
    

    然后在 views.py 中创建 all_menus 视图函数,用于处理所有菜单的展示:

    def all_menus(request):
        context_dict = {}
        menus = Menu.objects.all()
        context_dict['menus'] = menus
        return render(request, 'all_menus.html', context=context_dict)
    
  • 如果仅需访问特定菜单:确保你访问的URL包含正确的slug参数,比如 restaurant/menu/your-menu-slug/(替换 your-menu-slug 为你数据库中实际存在的菜单slug)。

问题2:URL模式中出现重复的 restaurant/

从错误信息可以看到,show_menu 的URL模式被解析为 restaurant/restaurant/menu/<slug:menu_name_slug>/,这说明路径中出现了重复的 restaurant/ 前缀。

原因及解决:

这通常是因为在项目根目录的 urls.py 中,你已经用 path('restaurant/', include('restaurant.urls')) 将餐厅应用的URL挂载到了 restaurant/ 下,但在应用的 urls.py 中,又给 menu 路径添加了额外的 restaurant/ 前缀(虽然你提供的代码中没有,但错误信息显示存在这个问题)。

检查你的应用 urls.py,确保 menu 的路径没有多余的 restaurant/ 前缀,应该保持为:

path('menu/<slug:menu_name_slug>/', views.show_menu, name='show_menu'),

同时确认根目录的 urls.py 中的配置正确:

from django.urls import path, include

urlpatterns = [
    # 其他路径...
    path('restaurant/', include('restaurant.urls')),
    # 其他路径...
]

这样配置后,show_menu 的正确URL应该是 restaurant/menu/<slug:menu_name_slug>/,而非带有重复前缀的版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 11:13:34