Используя Django, я постоянно получаю Uncaught TypeError: Illegal invocation When Trying to Open a Product Modal
Для вызова моего модала я использую следующее:
{% for product in products %}
<div class="product-action product-action-1 p-abs" id='product-action' data-id="{{ product.id }}">
<a href="#" data-bs-toggle="modal" data-bs-target="#productModal-{{ product.id }}" class="icon-box icon-box-1">
<i class="fal fa-eye"></i>
<i class="fal fa-eye"></i>
</a>
{% endfor %}
Мой модал - просто для тестирования я передал изображения из бэкенда:
Мой сценарий JQuery, который идет в нижнем колонтитуле HTML-страницы - но я использую include и базовый шаблон. Суть в том, что мой base.html включает footer.html - и javascript/jquery материал идет в js файл - затем я связываю js файл в тегах script в footer.html
// #productModal
$(document).on("click", ".product-action", function () {
let prodID = $(this).data('id');
console.log(prodID)
$.ajax({
type: 'GET',
url: '/store',
data: {'prod_id': prodID},
})
});
В представлении магазина в бэкенде Django я получил следующее:
def is_ajax(request):
"""
.is_ajax() is deprecated - people tend to use fetch method. This is custom is_ajax to check for request type.
:param request:
:return:
"""
return request.META.get('HTTP_X_REQUESTED_WITH') == 'XMLHttpRequest'
def store(request):
product_in_modal = None
review_in_modal = None
review_in_modal_count = None
prod_id = None
if is_ajax(request=request):
# Get product id from product modal
if request.GET.get('prod_id') is not None:
prod_id = request.GET.get('prod_id')
print(f'prod_id in views {prod_id}', os.getcwd())
# Using product id to get specific product and review of product and return the these to context.
try:
product_in_modal = Product.objects.get(id=prod_id)
except ObjectDoesNotExist:
pass
try:
review_in_modal = ReviewRating.objects.filter(product_id=prod_id, status=True)
except ObjectDoesNotExist:
pass
try:
review_in_modal_count = review_in_modal.count()
except AttributeError:
pass
context = {
'product_in_modal': product_in_modal,
'review_in_modal': review_in_modal,
'review_in_modal_count': review_in_modal_count,
}
return render(request, 'store.html', context)
Ошибка, которую я получил, выглядит следующим образом:
Итак, как мне это исправить? Мой подход неправильный?