【发布时间】:2016-10-07 21:48:51
【问题描述】:
我正在尝试使用 AJAX 在我的 Django 项目中创建搜索功能。但是views.py 中的功能似乎不能正常工作。也许我还有其他一些错误。你能告诉我我需要纠正什么吗?
这是我的 AJAX 文件:
$(document).ready( function(){
$('#suggestion').keyup(function(){
var query;
query = $(this).val();
$.get('/friends_plans/suggest_users/', {suggestion: query}, function(data){
$('#user').html(data);
});
});
});
这是我模板的一部分:
<div>
<ul class="nav nav-list">
<li class="nav-header">Find user</li>
<form>
<li><input class="search-query span10" type="text" name="suggestion" value=" " id="suggestion" /></li>
</form>
</ul>
</div>
<div id="user">
</div>
views.py 中的这些 ara 函数:
def suggest_users(request):
users_list = []
starts_with = ''
if request.method == 'GET':
starts_with = request.GET['suggestion']
users_list = get_users_list(5, starts_with)
return render(request, 'friends_plans/list.html', {'users_list': users_list})
def get_users_list(max_results=0, starts_with=''):
users_list = []
if starts_with:
users_list = Person.objects.filter(username__istartswith=starts_with)
if max_results > 0:
if len(users_list) > 0:
users_list = users_list[:max_results]
return users_list
这是来自 urls.py:
url(r'^suggest_users/$', views.suggest_users, name='suggest_users')
istartswith 方法不适用于变量,但适用于常量,我不明白为什么。并且suggest_users 函数不会将users_list 返回到ID 为user ($('#user').html(data)) 的对象,页面上不会出现任何内容。但也许还有其他一些错误。
【问题讨论】:
-
看起来您在 get 上发布数据,不知道您为什么要这样做。检查浏览器控制台,假设您处于调试模式,它将返回服务器发回的错误。我会从那里开始。如果您发布数据,您需要传递用于防止跨站点伪造的 csrf-token。在 Django 的网站上有关于此的文档。
-
克里斯,OP 正在使用完全正常的 get 请求发送数据。该网址最终将类似于
http://foo.com/resource?foo=bar -
这不是有效的 python 代码。如果您对获得帮助和学习非常感兴趣,请遵守有关缩进的最低规则。
标签: python ajax django django-templates django-views