完整版,通过ajax-get获取数据,通过ajax-post 上传数据。添加checkbox

重点

1.ajax-get

获取的数据如下所示

{'status': 'success', 'message': '获取成功', 'list': [{'model': 'app01.article', 'pk': 1, 'fields': {'title': '渺小的人类111111111', 'content': '渺小的人类渺小的人类渺小的人类渺小的人类渺小的人类xxxxxxxxxxxxxxxxxxx', 'account': 5, 'pub_date': '2018-07-09T16:19:52Z', 'read_count': 0, 'tag': [3]}}]}

 

function getAjax(v) {    //通过get请求取值,获取模态对话框上面所需的值
        $.ajax({
        url: "/app01/ajax/",
        type: "GET",
        data: {'id': v },
        dataType: 'json',
        success: function(data){
            $('#testdic').val(data)
            var dic_a = data['list'][0]['fields']
            for ( var i in dic_a ){
                console.log(i,dic_a[i])
                $('#popup').find('[tname="' + i + '"]').val(dic_a[i]);
            }
            dic_a['account'] == "1" ? $('#checkbox_id').prop('checked',true):$('#checkbox_id').prop('checked',false)
        }})
    }
    function test11(obj) {     //点击编辑触发
        var v = $(obj).parent().parent().find('[tname="id"]').text();
        $('#popup').find('input[tname="id"]').val(v);
        getAjax(v);
    }

  

2.Ajax-post

 

    $('#ajax_submit').click(function () {  //提交上传数据
        $.ajax({
            url: "/app01/ajax/",
            type: "POST",
            data: {'id': $('#id_id').val(),'title': $('#title_id').val(),'account_id':$('#account_id').val()},
            dataType:'json',
            success:function (data) {
                //alert(data);//成功返回
                if(data['status'] == "success" ){
                    location.reload();
                }else{
                    alert(data['status']+ data['message']) //一般是显示
                }
            }
        })
    })

  

 

二. 后台

Ajax接口 get+post

 

 

class Ajax(View):
    def get (self,request,**kwargs):
        ret={'status':'success','message':'获取成功'}
        """请求数据"""
        try:
            date=Article.objects.filter(id=request.GET.get("id"))
            ret['list']=json.loads(serializers.serialize('json',date))
        except Exception as e:
            ret['message']=e
        return JsonResponse(ret)
    def post(self, request,**kwargs):
        """提交表单"""
        ret = {'status': 'success', 'message': '获取成功'}
        try:
            id=request.POST.get("id")
            title=request.POST.get("title")
            account_id=request.POST.get("account_id")
            if title and len(title) > 3:
                pass
            v=Article.objects.filter(id=id)
            v.update(title=title,account_id=account_id)
        except Exception as e:
            ret['message'] = e
        return JsonResponse(ret)

  

urls.py

url(r'^ajax/$',views.Ajax.as_view(),name="Ajax"),

  

 

 

三. 完整代码

 

html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!-- Bootstrap -->
    <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div>
    <h1>XXXX的傻猫</h1>
</div>
<div>

<table class="table" border="1px">
            <thead>
            <tr>
                <th tname="title">IP地址</th>
                <th tname="account">端口</th>
                <th tname="operator">操作</th>
            </tr>
            </thead>
            <tbody>

            {%for obj in articles%}
            <tr>
                  <!--隐藏一个标签放数据,提交表单使用-->
                <td tname="title">{{obj.title}}<a tname="id" style="display: none">{{obj.id}}</a></td>
                <td tname="account">{{ obj.account }}</td>
                <td tname="operator"><a href="javacript:void(0)" οnclick="test11(this)" class="edit1"><span class="glyphicon glyphicon-edit" data-toggle="modal" data-target=".bs-example-modal-lg" aria-hidden="true"></span></a></td>
            </tr>
            {%endfor%}
            </tbody>
        </table>
</div>
<div id="popup" class="modal fade bs-example-modal-lg" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel">
  <div class="modal-dialog modal-lg" role="document">
    <div class="modal-content">
     <form  method="POST" style="margin: 20px 20px;">
          {% csrf_token %}
  <div class="form-group" style="display: none">   <!--隐藏一个标签放数据,提交表单使用-->
    <label for="exampleInputEmail1">id</label>
    <input id="id_id" tname="id" type="text" class="form-control" placeholder="Text input">
  </div>
  <div class="form-group">
    <label for="exampleInputEmail1">在用状态</label>
    <input id="checkbox_id" tname="account" type="checkbox" >
  </div>
  <div class="form-group">
    <label for="exampleInputEmail1">文章名称</label>
    <input id="title_id" tname="title" type="text" class="form-control" placeholder="Text input">
  </div>
  <div class="form-group">
    <label for="exampleInputPassword1">作者</label>
      <select tname="account" id="account_id" class="form-control" >
          {% for op in account %}
          <option  value="{{ op.id }}">{{ op.username }}</option>
          {% endfor %}
      </select>
  </div>
  <button id="ajax_submit" type="button" class="btn btn-default">确认</button>
   <button type="button" class="btn btn-default">取消</button>
</form>
    </div>
  </div>
</div>
<div id="testdic"></div>
    <!-- jQuery (Bootstrap 的所有 JavaScript 插件都依赖 jQuery,所以必须放在前边) -->
    <script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
    <!-- 加载 Bootstrap 的所有 JavaScript 插件。你也可以根据需要只加载单个插件。 -->
    <script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script>

    function getAjax(v) {    //通过get请求取值,获取模态对话框上面所需的值
        $.ajax({
        url: "/app01/ajax/",
        type: "GET",
        data: {'id': v },
        dataType: 'json',
        success: function(data){
            $('#testdic').val(data)
            console.log(data)
            console.log(data['list'])
            var dic_a = data['list'][0]['fields']
            for ( var i in dic_a ){
                console.log(i,dic_a[i])
                $('#popup').find('[tname="' + i + '"]').val(dic_a[i]);
            }
            dic_a['account'] == "1" ? $('#checkbox_id').prop('checked',true):$('#checkbox_id').prop('checked',false)
        }})
    }
    function test11(obj) {     //点击编辑触发
        var v = $(obj).parent().parent().find('[tname="id"]').text();
        $('#popup').find('input[tname="id"]').val(v);
        getAjax(v);
    }

    $('#ajax_submit').click(function () {  //提交上传数据
        $.ajax({
            url: "/app01/ajax/",
            type: "POST",
            data: {'id': $('#id_id').val(),'title': $('#title_id').val(),'account_id':$('#account_id').val()},
            dataType:'json',
            success:function (data) {
                //alert(data);//成功返回
                if(data['status'] == "success" ){
                    location.reload();
                }else{
                    alert(data['status']+ data['message']) //一般是显示
                }
            }
        })
    })
</script>
</body>
</html>

  

python

urls.py

from django.contrib import admin
from django.urls import path
from django.conf.urls import url
from app01 import views

urlpatterns = [
    path('index/',views.Index.as_view() ),
    url(r'^table/$',views.Table_html.as_view(),name="Table_html"),
    url(r'^ajax/$',views.Ajax.as_view(),name="Ajax"),
]

  

 

views.py

from django.shortcuts import render,redirect,HttpResponse
from django.http import JsonResponse
from django.views.generic import  View
from .models import  *
from django.views.generic import TemplateView
from django.core  import serializers
import json
# Create your views here.
from django.views.decorators.csrf import csrf_exempt,csrf_protect

class Index(View):
    def get(self,request):
        name=request.GET['name']
        print(name,"ssssss")
        a2=Account.objects.get(username=name)
        #a2.props_with_()
        #print(a2['username'])
        #b1=a1.article_set.all()
        a1 = Account.objects.all()
        #print()
        #b1=Article.objects.filter(account=a1)
        #b1=Article.objects.filter(account=a1)
        print(a1)
        return render(request,'templeate/index.html',locals())
class Table_html(TemplateView):
    template_name = "templeate/app01/tb.html"

    def get_context_data(self, **kwargs):
        context = super(Table_html, self).get_context_data(**kwargs)

        context['articles'] = Article.objects.all()
        context['account'] = Account.objects.all()
        return context

    def post_context_data(self, **kwargs):
        context = super(Table_html, self).post_context_data(**kwargs)
        context['articles'] = Article.objects.all()
        return context
class Ajax(View):
    def get (self,request,**kwargs):
        ret={'status':'success','message':'获取成功'}
        """请求数据"""
        try:
            date=Article.objects.filter(id=request.GET.get("id"))   #serializers.serialize 转django模型只能是filter 不能转get
            ret['list']=json.loads(serializers.serialize('json',date))  #构造json类型!!! 一定要json.loads,里面类型为str,需要转成json
        except Exception as e:
            ret['message']=e
        return JsonResponse(ret)
    def post(self, request,**kwargs):
        """提交表单"""
        ret = {'status': 'success', 'message': '获取成功'}
        try:
            id=request.POST.get("id")
            title=request.POST.get("title")
            account_id=request.POST.get("account_id")
            if title and len(title) > 3:
                pass
            v=Article.objects.filter(id=id)
            v.update(title=title,account_id=account_id)
        except Exception as e:
            ret['message'] = e
        return JsonResponse(ret)

  

转载于:https://www.cnblogs.com/a10086/p/9411238.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值