【发布时间】:2017-07-20 08:29:38
【问题描述】:
Django 新手。尝试设置一个具有支持自动完成的文本框的页面。我参考了这个post 以获得指导。出于某种原因,request.is_ajax() 总是返回 false。
主应用的 urls.py
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^$', home),
url(r'^search_assist/', include('search_assist.urls')),
]
search_assist 应用的 urls.py
urlpatterns = [
url(r'^$', views.search_assist, name='search_assist'),
]
views.py
def search_assist(request):
if request.is_ajax():
q = request.GET.get('term', '')
states = State.objects.filter(state_name_full__icontains = q )[:20]
results = []
for state in states:
state_json = {}
state_json['id'] = state.id
state_json['label'] = state.state_name_full
state_json['value'] = state.state_name_full
results.append(state_json)
data = json.dumps(results)
else:
data = 'fail'
mimetype = 'application/json'
return HttpResponse(data, mimetype)
HTML
{% extends "gif_alpha_test/header.html" %}
<div class="ui-widget">
<label for="sassist">Search Assist: </label>
<input type="text" id="sassist">
</div>
header.html 有以下 jQuery 函数。
<script>
$( document ).ready(function() {
assist();
});
function assist(){
$.ajaxSetup({
headers: {'X-Requested-With': 'XMLHttpRequest'}
$("#sassist").autocomplete({
source: "/search_assist/",
minLength: 2,
});});
}
</script>
我很少看到其他类似的帖子,但这些帖子的 cmets / 回复没有帮助。
关于为什么 request.is_ajax() 总是返回 false 的任何想法?感谢您的帮助。
【问题讨论】:
-
您正在尝试访问
source: "/search_assist/",但该网址没有该端点url(r'^$', views.search_assist, name='search_assist'),。 -
和你的追加
results.append(state_json)应该在 foo 循环内.. -
感谢 AKS。我的错。我没有分享主应用程序的 urls.py。更新了我的问题。有了这个,我希望端点很好? Sanca Kembang - 是的,这是正确的。更新了问题。谢谢!
标签: jquery django jquery-ui-autocomplete