搜索 Django 后重定向
Redirect after search Django
你好,我创建了自动完成 seacrh
Javascript
jQuery(function() {
$("#id_input").on('keyup', function(){
var value = $(this).val();
$.ajax({
url: "{% url 'ajax_autocomplete' %}",
data: {
'search': value
},
dataType: 'json',
success: function (data) {
list = data.list;
$("#id_input").autocomplete({
source: list,
minLength: 3
});
}
});
});
});
查看:
def autocomplete_search(request):
if request.is_ajax():
game = None
try:
game = Game.objects.get(name=request.GET.get('search', None))
except:
pass
if game is not None:
result = redirect('games')
else:
queryset = Game.objects.filter(name__startswith=request.GET.get('search', None))
list = []
for i in queryset:
list.append(i.name)
data = {
'list': list,
}
result = JsonResponse(data)
return result
但是当 game is not None
它只是响应页面 ajax 请求时它没有重定向。但是我想在 game != None
时停止请求并加载我需要的页面。怎么了?
这是因为您将重定向功能分配给一个变量,它不会那样工作。
您只需要在条件的每一端 return。
试试这样:
def autocomplete_search(request):
if request.is_ajax():
game = None
try:
game = Game.objects.get(name=request.GET.get('search', None))
except:
pass
if game is not None:
return redirect('games')
else:
queryset = Game.objects.filter(name__startswith=request.GET.get('search', None))
list = []
for i in queryset:
list.append(i.name)
data = {
'list': list,
}
return JsonResponse(data)
thx for karthikr 我接下来是这样做的
def autocomplete_search(request):
if request.is_ajax():
game = None
try:
game = Game.objects.get(name=request.GET.get('search', None))
except:
pass
if game is not None:
data = {
'redirect': '/link-to-redirect/'
}
result = redirect('games')
else:
queryset = Game.objects.filter(name__startswith=request.GET.get('search', None))
list = []
for i in queryset:
list.append(i.name)
data = {
'list': list,
}
result = JsonResponse(data)
return result
并且jquery改变下一个方式:
$.get({% url 'ajax_autocomplete' %}, {
data: $('#search-game').val()
}, function (response) {
if (response.redirect !== undefined) {
top.location.href=response.redirect;
} else {
list = response.list;
$("#search-game").autocomplete({
source: list,
minLength: 2
});
}
});
你好,我创建了自动完成 seacrh
Javascript
jQuery(function() {
$("#id_input").on('keyup', function(){
var value = $(this).val();
$.ajax({
url: "{% url 'ajax_autocomplete' %}",
data: {
'search': value
},
dataType: 'json',
success: function (data) {
list = data.list;
$("#id_input").autocomplete({
source: list,
minLength: 3
});
}
});
});
});
查看:
def autocomplete_search(request):
if request.is_ajax():
game = None
try:
game = Game.objects.get(name=request.GET.get('search', None))
except:
pass
if game is not None:
result = redirect('games')
else:
queryset = Game.objects.filter(name__startswith=request.GET.get('search', None))
list = []
for i in queryset:
list.append(i.name)
data = {
'list': list,
}
result = JsonResponse(data)
return result
但是当 game is not None
它只是响应页面 ajax 请求时它没有重定向。但是我想在 game != None
时停止请求并加载我需要的页面。怎么了?
这是因为您将重定向功能分配给一个变量,它不会那样工作。 您只需要在条件的每一端 return。
试试这样:
def autocomplete_search(request):
if request.is_ajax():
game = None
try:
game = Game.objects.get(name=request.GET.get('search', None))
except:
pass
if game is not None:
return redirect('games')
else:
queryset = Game.objects.filter(name__startswith=request.GET.get('search', None))
list = []
for i in queryset:
list.append(i.name)
data = {
'list': list,
}
return JsonResponse(data)
thx for karthikr 我接下来是这样做的
def autocomplete_search(request):
if request.is_ajax():
game = None
try:
game = Game.objects.get(name=request.GET.get('search', None))
except:
pass
if game is not None:
data = {
'redirect': '/link-to-redirect/'
}
result = redirect('games')
else:
queryset = Game.objects.filter(name__startswith=request.GET.get('search', None))
list = []
for i in queryset:
list.append(i.name)
data = {
'list': list,
}
result = JsonResponse(data)
return result
并且jquery改变下一个方式:
$.get({% url 'ajax_autocomplete' %}, {
data: $('#search-game').val()
}, function (response) {
if (response.redirect !== undefined) {
top.location.href=response.redirect;
} else {
list = response.list;
$("#search-game").autocomplete({
source: list,
minLength: 2
});
}
});