使用Ajax和Django进行动态GET请求

时间:2018-02-16 13:44:16

标签: python jquery ajax django

我使用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的任何想法都非常有用!

谢谢!

2 个答案:

答案 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来处理你的参数