Django 使用Ajax进行前后台交互的示例讲解
作者:笛在月明 发布时间:2023-08-03 03:57:47
标签:Django,Ajax,交互
本文要实现的功能是:根据下拉列表的选项将数据库中对应的内容显示在页面,选定要排除的选项后,提交剩余的选项到数据库。
为了方便前后台交互,利用了Ajax的GET和POST方法分别进行数据的获取和提交。
代码如下:
<!--利用获取的数据进行表单内容的填充-->
<script>
$("#soft_id").change(function(){
var softtype=$("#soft_id").find("option:selected").text();
var soft={'type_id':softtype}
$.ajax( {
type: 'GET',
url:'/data/soft-filter/{{family}}',
dataType: 'json',
data:soft,
success: function( data_get ){
build_dropdown( data_get, $( '#min_version' ), '请选择最低版本' );//填充表单
build_dropdown( data_get, $( '#max_version' ), '请选择最高版本' );
build_div(data_get,$('#soft_affected'));
}
});
});
var build_dropdown = function( data, element, defaultText ){
element.empty().append( '<option value="">' + defaultText + '</option>' );
if( data ){
$.each( data, function( key, value ){
element.append( '<option value="' + key + '">' + value + '</option>' );
} );
}
}
var build_div = function( data, element){
if( data ){
element.empty();
$.each( data, function( key, value ){
element.append(' <li class="clearfix"> <div class="todo-check pull-left"><input name="chk" type="checkbox" value="'+value+'" /></div> <div class="todo-title">'+value+' </div><div class="todo-actions pull-right clearfix"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="todo-complete"><i class="fa fa-check"></i></a><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="todo-edit"><i class="fa fa-edit"></i></a><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="todo-remove"><i class="fa fa-trash-o"></i></a></div> </li>');
} );
}
}
</script>
<!--选择并提交数据-->
<script>
//选择数据
function postselect (){
var seleitem=new Array();
$("input[name='chk']").each(function(i){
if(!($(this).is( ":checked" )) ){
seleitem[i]=$(this).val();
// alert(seleitem[i]);
}
});
//将排除后的数据提交到后台数据库
var soft={'type_id':seleitem}
$.ajax( {
type: 'POST',
url:'/data/soft-submit',
dataType: 'json',
data:soft,
success: function( data_get ){
}
});
}
</script>
部分html代码为:
<div style="overflow: hidden;" >
<ul id='soft_affected' class="todo-list sortable">
</ul>
</div>
views.py中处理请求和响应代码:
def soft_submit(request):
if request.is_ajax():
id=request.POST.get('type_id')
return HttpResponse("success")
def soft_filter(request,fami):
softtype=''
ajax_release_version=[]
release_version=[]
if request.is_ajax():
softtype=request.GET.get('type_id')
soft_type=SoftTypeRef.objects.using('vul').filter(description=softtype)
soft_tp_id=0
for i in soft_type:
soft_tp_id= i.soft_type_id
web_soft=SoftWeb.objects.using('vul').filter(soft_type_id=soft_tp_id)
for i in web_soft:
ajax_release_ver=i.release_version
ajax_release_version.append(ajax_release_ver)
return HttpResponse(json.dumps(ajax_release_version), content_type='application/json')
来源:https://blog.csdn.net/IqqIqqIqqIqq/article/details/52160662


猜你喜欢
- CSS对浏览器器的兼容性具有很高的价值,通常情况下IE和Firefox存在很大的解析差异,这里介绍一下兼容要点。常见兼容问题:1、DOCTY
- 现将几种主要情况进行小结: 一、如何输入NULL值 如果不输入null值,当时间为空时,会默认写入"1900-01-01"
- 本文实例为大家分享了python rsync服务器之间文件夹同步的具体代码,供大家参考,具体内容如下About rsync配置两
- 问题使用MybatisPlus 连接 SqlServer 数据库 ,在分页的时候发生了如下的报错,sql语句和报错如下:Cause: com
- SQL Server2005数据项的分拆与合并:参考示例如下:-- ====================================
- 这里发现可以采用三种的变通方法将置为disabled的元素状态改为enabled。 第一种:改变disabled的boolean状态,具体代
- 废话不多说了,直接给大家贴代码了。编写setup.py后$ python setup.py register$ python setup.p
- cos()方法返回x弧度的余弦值。语法以下是cos()方法的语法:cos(x)注意:此函数是无法直接访问的,所以我们需要导入ma
- 为什么需要优雅关闭什么叫优雅关闭?先说不优雅关闭,就是什么都不管,强制关闭进程,这会导致有些正在处理中的请求被强行中断这样做有什么问题?用户
- 1、引入文件<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.
- 我们要生成二维码都需要借助一些类库来实现了,下面我介绍利用PHP QR Code生成二维码吧,生成方法很简单,下面我来介绍一下.利用php类
- Requests 是使用 Apache2 Licensed 许可证的 基于Python开发的HTTP 库,其在Python内置模块的基础上进
- 本文实例讲述了Python简单实现TCP包发送十六进制数据的方法。分享给大家供大家参考,具体如下:举例: 0x12, 0x34可以直接拼成
- 自己编写的用于对lineEdit编辑框输入的子网,例如:192.168.60.1/24字符串校验是否合规。# 限制lineEdit编辑框只能
- 实现了宽度、高度、透明度的渐变,还能以高度宽度中点为中心,还扩展成以任意点为中心渐变(实例中以点击点为中心)。<!DOCTYPE ht
- 在使用可视化树的过程中,报错了。说是‘dot.exe'not found in path原代码:# import tools nee
- Python编程语言允许在一个循环内嵌套另一个循环。下面将介绍几个例子来说明这一概念。语法在Python中嵌套循环语句的语法如下
- 事情是这样的,我写了一个tornado的服务,过程当中我用logging记录一些内容,由于一开始并没有仔细观察tornado自已的日志管理,
- 使用WSH调用系统的Ping命令,将Ping的结果重定向到一个文本文件中去,再把文本文件显示到网页中具体做法如下:首先, 建一个.BAT文件
- numpy.random.shuffle在做将caffe模型和预训练的参数转化为tensorflow的模型和预训练的参数,以便微调,遇到如下