Django ajax搜索响应为404状态

时间:2018-11-22 23:16:37

标签: jquery ajax django

我正在尝试在django应用程序中使用ajax进行简单搜索。

我有以下模型:

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 :(得分:0)

所有人的拳头:

更改此内容:

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

由此:

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

检查表达式末尾的斜杠:

在您的视图函数的return语句中,它应以请求开头:

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

我希望它能为您提供帮助