django - 如何修复 NoReverseMatch
问题描述
我正在尝试更新我的菜单项以添加和编辑菜单项,但无法移动到下一页。尽管菜单项更新或添加。
视图.py
def addMenu(request, id):
if request.method == 'POST':
form = menuForm(request.POST)
if form.is_valid():
form.save()
return redirect('menu')
else:
form = menuForm()
context = {'form': form}
return render(request, 'addMenu.html', context)
def editMenu(request, id):
menu = get_object_or_404(Menu, pk=id)
if request.method == 'POST':
form = menuForm(request.POST, instance=menu)
if form.is_valid():
form.save()
return redirect('menu')
else:
form = menuForm(instance=menu)
context = {'form': form}
return render(request, 'editMenu.html', context)
模型.py
class Restaurants(models.Model):
restaurant_name = models.CharField(max_length=250, null=True, blank=True)
def __str__(self):
return self.restaurant_name
class Menu(models.Model):
restaurant_name = models.ForeignKey(Restaurants, on_delete=models.CASCADE, related_name='restaurants', null=True)
name = models.CharField(max_length=250, blank=True, null=True)
description = models.TextField(max_length=250)
price = models.CharField(max_length=8)
course = models.CharField(max_length=250)
网址.py
lpatterns = [
path('', views.showRestaurants, name='restaurants'),
path('add/', views.addRestaurants, name='add'),
path('edit/<id>', views.editRestaurants, name='edit'),
path('<id>/delete/', views.deleteRestaurants, name='delete'),
path('menu/<id>', views.showMenu, name='menu'),
path('addmenu/<id>/', views.addMenu, name='addmenu'),
path('menu/edit/<id>', views.editMenu, name='editmenu'),
path('menu/<id>/delete', views.deleteMenu, name='deletemenu'),
]
编辑.html
<form method='POST'>
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Update</button>
</form>
每次我点击更新时,我都会进入这个错误页面
Exception Type: NoReverseMatch
Exception Value:
Reverse for 'menu' with no arguments not found. 1 pattern(s) tried: ['menu\\/(?P<id>[^/]+)$']
尽管菜单项已更新并添加到我的菜单列表中
解决方案
您的menu
URL 模式需要一个 id,
path('menu/<id>', views.showMenu, name='menu'),
但是当您尝试重定向时没有提供 id:
return redirect('menu')
看起来你应该这样做:
return redirect('menu', id=id)
推荐阅读
- php - 当有人点击WordPress主题中的帖子时,如何在侧栏中显示相关类别的帖子?
- android - 我需要一个可以动态添加图标并将它们放在某些位置的工具栏
- javascript - Javascript 排序数组 ERROR TypeError: undefined is not an object
- swift - 应用程序在模拟器中崩溃,而不是在用于转换日期格式的设备上
- python-3.x - 如何在 init() 中保存用户输入字符串
- windows - 从命令行强制刷新(重新扫描)无线网络?
- reactjs - componentWillUnmount 什么时候真正触发
- java - 游标因 CursorIndexOutOfBoundsException 而崩溃
- ruby - 如何从 Ruby 2.4 中的哈希生成可靠的摘要?
- mysql - 如何在 MySQL 5.7 中组织这个查询?