#python #django #django-rest-framework #django-views
#python #django #django-rest-framework #django-просмотры
Вопрос:
У меня есть модель orders
, которая хранит заказы пользователей в ресторане. Я хочу создать представление, которое позволит мне отображать каждый элемент, доступный в базе данных, на домашней странице в виде сетки.
- Затем, когда пользователь нажимает на любой из элементов, он должен перевести их на новую страницу с дополнительной информацией об элементе. Как бы я установил логику для представления, чтобы узнать, какой элемент пользователь нажал?
Комментарии:
1. Вы пробовали какой-либо код?
2. Добро пожаловать в Stack Overflow. Мы здесь работаем не так. Мы ожидаем, что вы расскажете и покажете нам, что вы пробовали, а затем мы поможем вам с конкретными проблемами. Мы не решаем домашние задания.
Ответ №1:
Хорошо, поэтому я бы рекомендовал вам использовать представления на основе классов. Такие, как ListView и DetailView, будут соответствовать вашему варианту использования.
A views.py
с Listview будет выглядеть так:
from django.views.generic import ListView, DetailView
from .models import Items
class ItemsList(ListView):
model = Items
context_object_name = 'items_list'
template_name = "menu/index.html" # Location of the template
class ItemDetailList(DetailView):
model = Items
context_object_name = 'item'
template_name = "menu/item.html" # Location of the template
urls.py
В той же папке приложения не забудьте включить его в project urls.py
из django.urls путь импорта
from .views import ItemsList, ItemDetailList
urlpatterns = [
path("", ItemsList.as_view(), name="menu"),
path("item/<int:pk>/", ItemDetailList.as_view(), name="item_detail"),
]
В шаблоне вы бы ссылались на объект, используя context_object_name, который в случае представления списка будет items_list
В пути для подробного представления с <int:pk>
помощью вы передаете первичный ключ объекта, на который ссылаетесь, а затем ссылаетесь на него в своем шаблоне, который покажет вам информацию об элементе