Моя функция для проверки наличия ajax на странице не работает

Я делаю проект на django, где есть выпадающий список поиска/фильтра для формы. Я использую select2 и ajax. Это не работает, и когда я пытаюсь отлаживать с помощью операторов печати, кажется, что функция is_ajax(request) не возвращает true.

Я знаю, что функция is_ajax() была устаревшей в JQuery, поэтому я определил ее сам. Однако моя, похоже, тоже не работает.

Вот часть моего представления, которая фильтрует объекты:

@login_required
def job_application_create(request):
    form = JobApplicationForm()
    if is_ajax(request):
        print('TESTING TESTING TESTING TESTING TESTING TESTING TESTING TESTING ')
        term = request.GET.get('term')
        companies = Company.objects.filter(name__icontains=term)
        response_content = list(companies.values())
        return JsonResponse(response_content, safe=False)
    

а вот определение is_ajax(request):

def is_ajax(request):
    return request.headers.get('x-requested-with') == 'XMLHttpRequest'
    

Я также попробовал эту функцию:

def is_ajax(request):
    return request.META.get('HTTP_X_REQUESTED_WITH') == 'XMLHttpRequest'

Вот JS на странице, где находится моя форма:

<script>
        $(document).ready(function () {
            $('#id_company').select2({
                ajax: {
                    url: "{% url 'homepage' %}",
                    dataType: 'json',
                    processResults: function (data) {
                        return {
                            results: $.map(data, function (item) {
                                return {id: item.id, text: item.name};
                            })
                        };
                    }
                },
                minimumInputLength: 1
            });
        });
    </script>

Здесь проверяется, является ли ваш запрос ajax или нет.

if request.is_ajax():
   pass

Не нужна дополнительная функция для проверки того, является ли ваш запрос ajax или нет.

Вернуться на верх