Поиск Django Ajax отвечает со статусом 404 - PullRequest
0 голосов
/ 23 ноября 2018

Я пытаюсь сделать простой поиск с использованием ajax в моем приложении django.

У меня есть следующая модель:

class Ingredient(models.Model):
    name = models.CharField(max_length=200)

А вот мой javascript:

function search_success(data){
    $('#search_results').hmtl(data);
}

$(document).ready(function () {
    $("#id_ingredient").on('change', function () {
        update_unities();
    });

    $('#search_ing').on('keyup', function(){
        $.ajax({
            url: '/ajax/search/',
            data: {
                'search_text': $('#search_ing').val(),
            },
            dataType: 'html',
            success: search_success,
        });
    });
});

В своем urls.py я добавил следующее:

path('ajax/search', views.search_ingredients, name='search_ingredients')

И, на мой взгляд, я определил следующую функцию:

def search_ingredients(request):
    if request.method == "POST":
        search_text = request.POST['search_text']
    else:
        search_text = ''

    ingredients = Ingredient.objects.filter(title__contains=search_text)
    return render('recipe/search_ingredient.html', {'ingredients' : ingredients})

Я получаю 404ошибка по моей просьбе, кто-то может мне помочь?

РЕДАКТИРОВАТЬ: Вот моя структура папок.

.
├── admin.py
├── apps.py
├── forms.py
├── migrations
│   ├── omitted
├── models.py
├── static
│   └── css
│       └── recipe.css
├── templates
│   └── recipe
│       ├── base.html
│       ├── recipe_add_ingredient.html
│       ├── recipe_detail.html
│       ├── recipe_edit.html
│       ├── recipe_list.html
│       └── search_ingredient.html
├── tests.py
├── urls.py
└── views.py

1 Ответ

0 голосов
/ 23 ноября 2018

fist of all:

измените это:

path('ajax/search', views.search_ingredients, name='search_ingredients')

на это:

path('ajax/search/', views.search_ingredients, name='search_ingredients')

проверьте косую черту в конце выражения:

в операторе возврата вашей функции просмотра она должна начинаться с запроса:

return render(request, 'recipe/search_ingredient.html', {'ingredients' : ingredients})

Надеюсь, это может помочь вам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...