jquery 使用Ajax和Django实现动态GET请求

iqxoj9l9  于 2023-10-17  发布在  jQuery
关注(0)|答案(3)|浏览(120)

我是一个使用Ajax的新手,但是我已经使用Django有一段时间了。
我想知道我如何能动态提交一个表单,它将-不刷新页面-附加这个新的'参数'到URL,并返回一些更新的数据。例如,如果我更改了一个名为maximum price的值并点击'Apply',那么这将向URL添加'&max_price=some_new_value',并返回一个带有maximum price过滤器的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的想法都将非常有用!
谢谢你,谢谢

ukdjmx9f

ukdjmx9f1#

你可以像这样使用一个字母:

$.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)

你应该有一个观景路线:

from django.conf.urls import url
from core import views

urlpatterns = [
url(r'^theUrlYouMappedServerSide/$', views.yourFunc, name='yourFunc')
]

你只需要根据你的需要使用与HttpResponse(data)不同的东西

qc6wkl3g

qc6wkl3g2#

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来处理参数

2lpgd968

2lpgd9683#

这是一个有点长的解释,肯定有点晚回答,但也许这将是有用的其他人在这种情况下:你应该看看HTMX,它太棒了。The doc也很不错。
但是我在这个问题上用this guy that produced very good videos学习了HTMX的所有基础。
他改变了我的生活:不再需要AJAX或其他繁重的JS代码。

相关问题