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="#" class="todo-complete"><i class="fa fa-check"></i></a><a href="#" class="todo-edit"><i class="fa fa-edit"></i></a><a href="#" 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')
  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
好的,下面是一个使用Ajax登录Django后台的示例。 前端代码: ``` <form id="login-form"> {% csrf_token %} <label for="username">用户名</label> <input type="text" id="username" name="username" required> <label for="password">密码</label> <input type="password" id="password" name="password" required> <button type="submit">登录</button> </form> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <script> $(function() { $('#login-form').submit(function(event) { event.preventDefault(); // 阻止表单的默认提交行为 // 获取表单数据 var username = $('#username').val(); var password = $('#password').val(); var csrfmiddlewaretoken = $('input[name="csrfmiddlewaretoken"]').val(); // 发送Ajax请求 $.ajax({ type: 'POST', url: '/login/', // Django后台登录视图的URL data: { username: username, password: password, csrfmiddlewaretoken: csrfmiddlewaretoken }, success: function(data) { if (data.success) { // 登录成功,跳转到首页 window.location.href = '/'; } else { // 登录失败,显示错误信息 alert(data.message); } }, error: function() { // 请求失败,显示错误信息 alert('请求失败,请稍后重试!'); } }); }); }); </script> ``` 后台代码: ``` from django.shortcuts import render from django.http import JsonResponse from django.contrib.auth import authenticate, login def login_view(request): if request.method == 'POST': username = request.POST.get('username') password = request.POST.get('password') user = authenticate(request, username=username, password=password) if user is not None: # 登录成功 login(request, user) return JsonResponse({'success': True}) else: # 登录失败 return JsonResponse({'success': False, 'message': '用户名或密码错误!'}) else: # GET请求返回登录页面 return render(request, 'login.html') ``` 在上述代码,前端使用jQuery库来发送Ajax请求,后台使用Django框架处理请求,并返回JSON格式的数据。在实际应用,需要根据具体的业务逻辑来验证用户身份,并返回相应的数据。其,`{% csrf_token %}`用于防止跨站请求伪造攻击。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值