Проблема передачи параметра размера из JavaScript в бэкенд Django
У меня возникла проблема с передачей параметра "size" из моей JavaScript-функции в мой Django-бэкенд. Вот соответствующий фрагмент кода из моего представления Django:
def get_product(request, slug):
try:
product = Product.objects.get(slug=slug)
if request.GET.get('size'):
size = request.GET.get('size')
print(size)
return render(request, "core/product_detail.html")
except Exception as e:
print(e)
А вот функция JavaScript:
function get_correct_price(size) {
console.log(size);
window.location.href = window.location.pathname + `?size=${size}`;
}
В моем HTML-шаблоне я вызываю функцию JavaScript с параметром size:
<button onclick="get_correct_price('{{ s.name }}')">{{ s.name }}</button>
Однако, когда я нажимаю на кнопку, параметр размера, похоже, не передается в бэкэнд. Я проверил, что функция JavaScript вызывается, и параметр размера правильно регистрируется в консоли.
Помогите, пожалуйста, определить, почему параметр размера не принимается в бэкенде? Любые соображения или предложения будут очень признательны. Спасибо!
Сделайте имена ваших url уникальными.
Сделайте параметры url такими, как показано ниже.
path("products/",product_list_view,name="product_list"),
path("product/<int:pid>/",product_detail_view,name="product_detail"),
path("product/<slug:slug>/",get_product,name="get_product")
Сделать шаблон страницы ошибки и показывать эту страницу при исключении
def get_product(request, slug):
try:
product = Product.objects.get(slug=slug)
if request.GET.get('size'):
size = request.GET.get('size')
print(size)
return render(request, "core/product_detail.html")
except Exception as e:
print(e)
return render(request, "core/error_page.html")
- Очевидно, что в вашей модели нет поля с названием slug. Поэтому приведенный ниже код не будет работать.
product = Product.objects.get(slug=slug)