我使用Ajax相当新,但是现在已经使用Django了一段时间。
我想知道如何动态提交表单 - 在不刷新页面的情况下 - 将这个新的'参数'附加到URL并返回一些更新的数据。例如,如果我更改一个名为maximum price的值并单击“Apply”,那么这将向URL添加“&max_price=some_new_value
”并返回带有最高价格过滤器的Django查询集。
我能够像这样开始......
$('.filter-ul-opt-change-apply').click(function(){
$.get(...{
...
})
})
尽管jQuery documentation指定将ajax/test.html
之类的URL作为参数传递给get()
方法,但我不确定这将如何与Django视图一起检索对象
views.py:
def generic_view(request):
objs = Objects.objects.filter(...parameters from updated url go here...)
return render(request, 'generic-view.html', {'objs':objs})
为此目的使用Django和Ajax的任何想法都非常有用!
谢谢!
答案 0 :(得分:1)
你可以像这样使用ajax:
$.ajax({
type : "GET",
dataType : yourDataType,
data : {
'max_price'=some_new_value
}
url : theUrlYouMappedServerSide,
success : function(response) {
}
});
在.py中你应该有类似的东西:
from django.contrib.auth.models import User
from django.http import JsonResponse
def yourFunc(request):
max_price= request.GET.get('max_price', None)
//do some stuff
data = {
// your stuff from serverside
}
return HttpResponse(data)
你应该有一个viewroute:
from django.conf.urls import url
from core import views
urlpatterns = [
url(r'^theUrlYouMappedServerSide/$', views.yourFunc, name='yourFunc')
]
根据您的需要,您只需使用与HttpResponse(data)
不同的内容
答案 1 :(得分:0)
AJAX通用请求:
$.ajax({
type: "GET", // or POST
url: YOUR_ENDPOINT,
data : YOUR_GET_PARAMETERS,
success: function(response) {
// success callback, update your html
},
error: function(response) {
// error handling
}
});
在django方面使用request.GET
来处理你的参数