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

Ajax请求(页面不刷新)

依赖JQuery

Ajax基本代码代码

{% block js %}
    <script type="text/javascript">
        $(function(){
            //页面框架加载完成之后代码自动执行
            bindBtnEvent();
        })
        function bindBtnEvent(){
            $("#btn1").click(function(){
                    $.ajax({
                        url:'/task/ajax/',
                        type:"get",
                        data:{
                            n1:123,
                            n2:456

                        },
                        dataType:"JSON",
                        success:function(res){
                            console.log(res);
                            console.log(res.status);
                            console.log(res.data);
                }
            })
            })
        }
    </script>
{% endblock %}
        

url.py编写——他返回的是一个json数据

    #任务管理
    path('task/list/',views.task_list),
    #
    path('task/ajax/',views.task_ajax),
    path('task/add/',views.task_add),
    

view.py编写

#导入
# from app01 import models
# from app01.utils.bootstrap import BootStrapModelForm
from django import forms
class TaskModelForm(BootStrapModelForm):
    class Meta:
        model =models.Task
        fields ="__all__"
        widgets ={
            "detail":forms.TextInput

        }




#任务列表
def task_list(request):
    
    #实例化
    form =TaskModelForm
    return render(request,"task_list.html",{"form":form})


#导入
from django.views.decorators.csrf import csrf_exempt


import json
from django.http import JsonResponse
# @csrf_exempt
def task_ajax(request):
    print(request.GET)
    data_dict = {"status":True,'data':[11,22,33,44]}
    json_string = json.dumps(data_dict)
    return HttpResponse(json_string)
    #return JsonResponse(data_dict)

@csrf_exempt
def task_add(request):
    #< QueryDict: {'level': ['1'], 'title': ['标题'], 'detail': ['详细信息'], 'user': ['2']} >

    # print(request.POST)
    
    #用户发送过来的数据进行校验(modelForm进行校验)
    form = TaskModelForm(data=request.POST)
    if form.is_valid():
        form.save()
        data_dict = {"status": True}
        return HttpResponse(JsonResponse(data_dict))
    data_dict ={"status":False,"error":form.errors}
    return HttpResponse(json.dumps(data_dict,ensure_ascii=False))

在HTML中编写

{% extends 'layout.html'%}

{% block content %}
    <div class="container">
        <div class="panel panel-default">
              <div class="panel-heading">新建任务表单</div>
              <div class="panel-body">

                    <form  id="formAdd">
                      <div class="clearfix">
                          {% for field in form %}
                            <div class="col-xs-6">
                                  <div class="form-group" style="position:relative; margin-bottom:20px;">
                                        <label >{{ field.label }}</label>
                                        {{ field }}
                                        <span class="error-msg" style="color:red; position: absolute;"></span>
                                  </div>
                            </div>
                          {% endfor %}
                          <div class="col-xs-6">
                            <button id="btnAdd" type="button" class="btn btn-primary">提 交</button>
                          </div>
                      </div>

                </form>

              </div>
        </div>



        <hr/>
        <h1>Ajax学习</h1>

        <h3>示例1</h3>
        <input id="btn1" type="button" class="btn btn-primary" value="点击1" onclick="clickMe();">
        <h3>示例2</h3>
        <input id="txtUser" type="text"  placeholder="姓名">
        <input id="txtAge" type="text"  placeholder="年龄">
        <input id="btn2" type="button" class="btn btn-primary" value="点击2" onclick="clickMe();">
        <h3>示例3</h3>
        <form id="form3">
        <input name="user"  type="text"  placeholder="姓名">
        <input name="age" type="text"  placeholder="年龄">
        <input name="email"  type="text"  placeholder="邮箱">
        <input name="more"  type="text"  placeholder="介绍">
        <input id="btn3" type="button" class="btn btn-primary" value="点击3" >
        </form>
    </div>

{% endblock %}

{% block js %}
    <script type="text/javascript">
        $(function(){
            //页面框架加载完成之后代码自动执行
            bindBtnEvent();
            bindBtnEvent2();
            bindBtnEvent3();
            bindBtnAddEvent();


        })
        function bindBtnEvent(){
            $("#btn1").click(function(){
                    $.ajax({
                        url:'/task/ajax/',
                        type:"get",
                        data:{
                            n1:123,
                            n2:456

                        },
                        dataType:"JSON",
                        success:function(res){
                            console.log(res);
                            console.log(res.status);
                            console.log(res.data);
                }
            })
            })
        }
        function bindBtnEvent2(){
            $("#btn2").click(function(){
                    $.ajax({
                        url:'/task/ajax/',
                        type:"get",
                        data: {
                            name:$("#txtUser").val(),
                            age:$("#txtAge").val()

                        },

                        dataType:"JSON",
                        success:function(res){
                            console.log(res);
                            console.log(res.status);
                            console.log(res.data);
                }
            })
            })
        }
        function bindBtnEvent3(){
            $("#btn3").click(function(){
                    $.ajax({
                        url:'/task/ajax/',
                        type:"get",
                        data:$("#form3").serialize(),
                        dataType:"JSON",
                        success:function(res){
                            console.log(res);
                            console.log(res.status);
                            console.log(res.data);
                }
            })
            })
        }
        function bindBtnEvent3(){
            $("#btnAdd").click(function(){

                    $(".error-msg").empty();

                    $.ajax({
                        url:'/task/add/',
                        type:"post",
                        data:$("#formAdd").serialize(),
                        dataType:"JSON",
                        success:function(res){
                            if(res.status){
                                alert("添加成功!")
                            } else {
                                $.each(res.error,function(name,data){
                                    $("#id_"+ name).next().text(data[0]);
                                }

                            )


                            }
                }
            })
            })
        }


    </script>
{% endblock %}


在model.py中编写

#任务表    
class Task(models.Model):
    level_choices ={
        (1,"紧急"),
        (2,"重要"),
        (3,"临时"),
    }
    level = models.SmallIntegerField(verbose_name="级别",choices=level_choices,default=1)
    title = models.CharField(verbose_name="标题",max_length=64)
    detail = models.TextField(verbose_name="详细信息")
    
    user = models.ForeignKey(verbose_name="负责人",to="Admin",on_delete=models.CASCADE)

最终显示样式

在这里插入图片描述

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

在这里插入图片描述请添加图片描述

#输出显示函数——不输出对象
    def __str__(self):
        return self.username

注:为了节约时间不像之前那样详细,之后有时间复习我会重新编辑。

相关推荐

  1. Django——Ajax请求

    2024-06-07 20:56:02       38 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-07 20:56:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-07 20:56:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-07 20:56:02       82 阅读
  4. Python语言-面向对象

    2024-06-07 20:56:02       91 阅读

热门阅读

  1. 人类的深度学习与机器的深度学习不同

    2024-06-07 20:56:02       33 阅读
  2. 机器学习笔记——欠拟合、过拟合

    2024-06-07 20:56:02       29 阅读
  3. 鸿蒙系统和MIUI之类的系统有何区别?

    2024-06-07 20:56:02       22 阅读
  4. 机器学习ML.NET

    2024-06-07 20:56:02       25 阅读
  5. 在Linux/Ubuntu/Debian中使用lshw查看系统信息

    2024-06-07 20:56:02       34 阅读
  6. C++之动态数组

    2024-06-07 20:56:02       32 阅读
  7. vue3开发时,热更新页面的生命周期

    2024-06-07 20:56:02       29 阅读
  8. mysql GROUP BY 语句报错处理

    2024-06-07 20:56:02       26 阅读
  9. 浅谈Qt:跨平台开发的现在与未来

    2024-06-07 20:56:02       30 阅读