Использование вариантов, используемых в Models.py для маршрутизации страницы в Django - PullRequest
0 голосов
/ 02 января 2019

Я начал проект в Джанго, где я делаю новый ресторанный сайт.Сначала я подумал сделать такую ​​модель:

class Menu(models.Model):
   user = models.ForeignKey(User,default=1, on_delete=models.CASCADE)
   name = models.CharField("Name of the dish",max_length=30)
   category = models.CharField(max_length=20,choices=CATEGORY_CHOICES,default='SP')
   description = models.TextField(max_length=300)
   dish_image = models.ImageField(upload_to='uploads/')

И у меня CATEGORY_CHOICES как CATEGORY_CHOICES = [('L', 'Обед'), .....]

Теперь у меня есть эта кнопка на странице индекса, которая перенаправляет на страницу меню. На странице меню я думаю о , отображающем [n] количество плиток с [name] (n = количество элементов в выборе категории и name = полное имя этогопример: Обед)

Получив много ошибок и выяснив каждую ошибку, я выполнил эту задачу. Теперь , после этого я хочу открыть меню определенной категории, когда пользователь нажимает на него .Например: если пользователь щелкает плитку «Обед», он должен перейти на другую страницу, где указан весь список продуктов этой категории.Мой шаблон URL выглядит следующим образом:

urlpatterns = [
  path('', views.index, name="index"),
  path('menu/', views.menu, name="menu"),
  path('menu/<str:menu_category>/', views.menu_detail, name="menu_detail"),
]

И у меня есть это представление:

def menu_detail(request, menu_category):
  menu_list = get_list_or_404(Menu ,category=menu_category)
  menu_title = Menu.objects.get(category=menu_category)
  return render(request,'restaurant/menu_detail.html',{'menu_list':menu_list,'menu_title':menu_title})

В шаблоне меню я называю его как

<a href="{% url 'menu_detail' menu_category = menus.menu_category %}">

Я не знаю, где я поступил неправильно.Но я получаю ReverseMatchException во время просмотра .... / menu /.Может быть, это слишком сложно для меня, так как я новичок в этой области.Кто-нибудь может помочь, пожалуйста?

...