我正在尝试在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
答案 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})
我希望它能为您提供帮助