Выполнение действия при нажатии на кнопку
Не особо представляю как реализовать какое-либо действие при нажатии кнопки на сайте. Идея такова, чтобы сделать 9 кнопок. При нажатии на одну из них должно возвращаться определённое значение, в моём случае название блюда. Затем оно выводится в список блюд для заказа. Что-то вроде добавления продукта в корзину. Названия всех блюд есть. Сразу перешёл к джанго, не особо разобравшись в питоне, т.к. поджимает время и не могу ничего придумать. Судя по тому, что я нашёл, возможно стоит использовать onclick, но что именно происходит не понимаю.
foods\models.py
from django.db import models
class Food(models.Model):
name = models.CharField(max_length=30)
def __str__(self):
return self.name
Ответы (1 шт):
Тебе нужна будет модель для "список блюд для заказа" и в ней определить поле (например) foods со связью ForeginKey которая будет связывать заказ с блюдами, ее так же лучше определить для удобства т.к потом может потребоваться отслеживать статус заказа, коментарии к нему и т.д.
Простой вариант это написать в view.py функцию которая будет обрабатывать POST запрос, получать из request.data 2 параметра product_id и order_id.
И привязать ее к url например: order/add/
А самый простой вариант можешь отправлять GET запрос а необходимые id получать их url и связывать их. В таком случае url будет выглядеть как-то так: /order/<int:pk>/product-add/<int:pk>/
вместо int:pk в запросе с фронтенда надо будет вставить нужные id.
В view.py
ты получаешь нужны модели по id с помощью Django ORM, связываешь их и сохраняешь. В ответ возвращаешь response с статусом 201, чтобы было понятно что все прошло успешно или с статусом 404 если что то пошло не так.
На фронтенде просто напишешь функцию которая делает POST или GET запрос с нужными данными. И привязываешь ее к onclick в button.
Самый сложный и правильный вариант использовать Django Rest Framework.
Пишешь сериализаторы для моделей определяешь в urls.py какой то путь по типу '/order/add/' и для него делаешь в view.py функцию которая будет обрабатывать post запрос, добавляя в модель заказа нужное блюдо по id. Отправляешь post запрос на выбранной тобой URL с data {order_id='12', product_id='21'}