【银角大王——Django课程——Ajax请求】

打印 上一主题 下一主题

主题 576|帖子 576|积分 1728

Ajax请求(页面不革新)

依赖JQuery

Ajax基本代码代码

  1. {% block js %}
  2.     <script type="text/javascript">
  3.         $(function(){
  4.             //页面框架加载完成之后代码自动执行
  5.             bindBtnEvent();
  6.         })
  7.         function bindBtnEvent(){
  8.             $("#btn1").click(function(){
  9.                     $.ajax({
  10.                         url:'/task/ajax/',
  11.                         type:"get",
  12.                         data:{
  13.                             n1:123,
  14.                             n2:456
  15.                         },
  16.                         dataType:"JSON",
  17.                         success:function(res){
  18.                             console.log(res);
  19.                             console.log(res.status);
  20.                             console.log(res.data);
  21.                 }
  22.             })
  23.             })
  24.         }
  25.     </script>
  26. {% endblock %}
  27.         
复制代码
url.py编写——他返回的是一个json数据

  1.     #任务管理
  2.     path('task/list/',views.task_list),
  3.     #
  4.     path('task/ajax/',views.task_ajax),
  5.     path('task/add/',views.task_add),
  6.    
复制代码
view.py编写

  1. #导入
  2. # from app01 import models
  3. # from app01.utils.bootstrap import BootStrapModelForm
  4. from django import forms
  5. class TaskModelForm(BootStrapModelForm):
  6.     class Meta:
  7.         model =models.Task
  8.         fields ="__all__"
  9.         widgets ={
  10.             "detail":forms.TextInput
  11.         }
  12. #任务列表
  13. def task_list(request):
  14.    
  15.     #实例化
  16.     form =TaskModelForm
  17.     return render(request,"task_list.html",{"form":form})
  18. #导入
  19. from django.views.decorators.csrf import csrf_exempt
  20. import json
  21. from django.http import JsonResponse
  22. # @csrf_exempt
  23. def task_ajax(request):
  24.     print(request.GET)
  25.     data_dict = {"status":True,'data':[11,22,33,44]}
  26.     json_string = json.dumps(data_dict)
  27.     return HttpResponse(json_string)
  28.     #return JsonResponse(data_dict)
  29. @csrf_exempt
  30. def task_add(request):
  31.     #< QueryDict: {'level': ['1'], 'title': ['标题'], 'detail': ['详细信息'], 'user': ['2']} >
  32.     # print(request.POST)
  33.    
  34.     #用户发送过来的数据进行校验(modelForm进行校验)
  35.     form = TaskModelForm(data=request.POST)
  36.     if form.is_valid():
  37.         form.save()
  38.         data_dict = {"status": True}
  39.         return HttpResponse(JsonResponse(data_dict))
  40.     data_dict ={"status":False,"error":form.errors}
  41.     return HttpResponse(json.dumps(data_dict,ensure_ascii=False))
复制代码
在HTML中编写

  1. {% extends 'layout.html'%}
  2. {% block content %}
  3.     <div class="container">
  4.         <div class="panel panel-default">
  5.               <div class="panel-heading">新建任务表单</div>
  6.               <div class="panel-body">
  7.                     <form  id="formAdd">
  8.                       <div class="clearfix">
  9.                           {% for field in form %}
  10.                             <div class="col-xs-6">
  11.                                   <div class="form-group" style="position:relative; margin-bottom:20px;">
  12.                                         <label >{{ field.label }}</label>
  13.                                         {{ field }}
  14.                                         <span class="error-msg" style="color:red; position: absolute;"></span>
  15.                                   </div>
  16.                             </div>
  17.                           {% endfor %}
  18.                           <div class="col-xs-6">
  19.                             <button id="btnAdd" type="button" class="btn btn-primary">提 交</button>
  20.                           </div>
  21.                       </div>
  22.                 </form>
  23.               </div>
  24.         </div>
  25.         <hr/>
  26.         <h1>Ajax学习</h1>
  27.         <h3>示例1</h3>
  28.         <input id="btn1" type="button" class="btn btn-primary" value="点击1" onclick="clickMe();">
  29.         <h3>示例2</h3>
  30.         <input id="txtUser" type="text"  placeholder="姓名">
  31.         <input id="txtAge" type="text"  placeholder="年龄">
  32.         <input id="btn2" type="button" class="btn btn-primary" value="点击2" onclick="clickMe();">
  33.         <h3>示例3</h3>
  34.         <form id="form3">
  35.         <input name="user"  type="text"  placeholder="姓名">
  36.         <input name="age" type="text"  placeholder="年龄">
  37.         <input name="email"  type="text"  placeholder="邮箱">
  38.         <input name="more"  type="text"  placeholder="介绍">
  39.         <input id="btn3" type="button" class="btn btn-primary" value="点击3" >
  40.         </form>
  41.     </div>
  42. {% endblock %}
  43. {% block js %}
  44.     <script type="text/javascript">
  45.         $(function(){
  46.             //页面框架加载完成之后代码自动执行
  47.             bindBtnEvent();
  48.             bindBtnEvent2();
  49.             bindBtnEvent3();
  50.             bindBtnAddEvent();
  51.         })
  52.         function bindBtnEvent(){
  53.             $("#btn1").click(function(){
  54.                     $.ajax({
  55.                         url:'/task/ajax/',
  56.                         type:"get",
  57.                         data:{
  58.                             n1:123,
  59.                             n2:456
  60.                         },
  61.                         dataType:"JSON",
  62.                         success:function(res){
  63.                             console.log(res);
  64.                             console.log(res.status);
  65.                             console.log(res.data);
  66.                 }
  67.             })
  68.             })
  69.         }
  70.         function bindBtnEvent2(){
  71.             $("#btn2").click(function(){
  72.                     $.ajax({
  73.                         url:'/task/ajax/',
  74.                         type:"get",
  75.                         data: {
  76.                             name:$("#txtUser").val(),
  77.                             age:$("#txtAge").val()
  78.                         },
  79.                         dataType:"JSON",
  80.                         success:function(res){
  81.                             console.log(res);
  82.                             console.log(res.status);
  83.                             console.log(res.data);
  84.                 }
  85.             })
  86.             })
  87.         }
  88.         function bindBtnEvent3(){
  89.             $("#btn3").click(function(){
  90.                     $.ajax({
  91.                         url:'/task/ajax/',
  92.                         type:"get",
  93.                         data:$("#form3").serialize(),
  94.                         dataType:"JSON",
  95.                         success:function(res){
  96.                             console.log(res);
  97.                             console.log(res.status);
  98.                             console.log(res.data);
  99.                 }
  100.             })
  101.             })
  102.         }
  103.         function bindBtnEvent3(){
  104.             $("#btnAdd").click(function(){
  105.                     $(".error-msg").empty();
  106.                     $.ajax({
  107.                         url:'/task/add/',
  108.                         type:"post",
  109.                         data:$("#formAdd").serialize(),
  110.                         dataType:"JSON",
  111.                         success:function(res){
  112.                             if(res.status){
  113.                                 alert("添加成功!")
  114.                             } else {
  115.                                 $.each(res.error,function(name,data){
  116.                                     $("#id_"+ name).next().text(data[0]);
  117.                                 }
  118.                             )
  119.                             }
  120.                 }
  121.             })
  122.             })
  123.         }
  124.     </script>
  125. {% endblock %}
复制代码
在model.py中编写

  1. #任务表   
  2. class Task(models.Model):
  3.     level_choices ={
  4.         (1,"紧急"),
  5.         (2,"重要"),
  6.         (3,"临时"),
  7.     }
  8.     level = models.SmallIntegerField(verbose_name="级别",choices=level_choices,default=1)
  9.     title = models.CharField(verbose_name="标题",max_length=64)
  10.     detail = models.TextField(verbose_name="详细信息")
  11.    
  12.     user = models.ForeignKey(verbose_name="负责人",to="Admin",on_delete=models.CASCADE)
复制代码
终极显示样式


为了是管理员表显示name而不是对象


  1. #输出显示函数——不输出对象
  2.     def __str__(self):
  3.         return self.username
复制代码
注:为了节约时间不像之前那样详细,之后偶然间复习我会重新编辑。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

道家人

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表