首页 > 其他分享 >django——Ajax(添加)

django——Ajax(添加)

时间:2023-10-20 10:34:05浏览次数:22  
标签:status function name form models django Ajax 添加 import

1. 创建Model

class Order(models.Model):
    odi = models.CharField(verbose_name='订单号', max_length=64)
    title = models.CharField(verbose_name='名称', max_length=32)
    price = models.IntegerField(verbose_name='价格')
    status_choices = (
        (1, '待支付'),
        (2, '已支付'),
    )
    status = models.SmallIntegerField(verbose_name='状态', choices=status_choices, default=1)
    admin = models.ForeignKey(verbose_name='管理员', to='loguser', on_delete=models.CASCADE)

2. 创建ModelForm

class orderModel(forms.ModelForm):
    class Meta:
        model = models.Order
        # fields = '__all__'
        exclude=["odi","admin"]
        labels={
            'title':'名称',
            'price':'价格',
            'status':'状态',

        },
        widgets={
            'title':forms.TextInput(attrs={'class':'form-control'}),
            'price':forms.NumberInput(attrs={'class':'form-control'}),
            'status':forms.Select(attrs={'class':'form-control'}),
        }

3. 在views模块中编写后端代码

from django.shortcuts import render, redirect, HttpResponse
from . import forms
from . import models
from django.views.decorators.csrf import csrf_exempt
from django.http import JsonResponse
import random
from datetime import datetime


@csrf_exempt
def order_add(request):
    form = forms.orderModel(request.POST)
    if form.is_valid():
        print(form.cleaned_data)
        form.instance.odi = datetime.now().strftime('%Y%m%d%H%M%S') + str(random.randint(1000, 9999))
        form.instance.admin_id=request.session['id']
        form.save()
        return JsonResponse({"status": True})

    return JsonResponse({"status": False, 'error': form.errors})

4. 编写HTML

{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

</head>
<link rel="stylesheet" type="text/css" href="{% static '/bootstrap/css/bootstrap.min.css' %}">

<body>
<div class="container ">
    <div>
        <!-- 点击按钮 -->
        <input type="button" id="btnAdd" value="新建订单" class="btn btn-primary" data-toggle="modal">
{#        <button type="button" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal"></button>#}

    </div>
       <!-- 新建订单对话框 -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
        <h4 class="modal-title" id="myModalLabel">新建</h4>
      </div>
      <div class="modal-body">
        <form id="formAdd">
        <div class="clearfix">
            <div class="col-xs-6">
                <div class="form-group">
                    <label>{{ form.title.label }}</label>
                    {{ form.title }}
                    <span class="error-msg" style="color: red"></span>

                </div>
            </div>

            <div class="col-xs-6">
              <div class="form-group">
                    <label>{{ form.price.label }}</label>
                    {{ form.price }}
                    <span class="error-msg" style="color: red"></span>
              </div>
            </div>

            <div class="col-xs-6">
              <div class="form-group">
                    <label>{{ form.status.label }}</label>
                    {{ form.status }}
                    <span class="error-msg" style="color: red"></span>
              </div>
            </div>

            <div class="col-xs-6">
              <div class="form-group">
                    <label>{{ form.admin.label }}</label>
                    {{ form.admin }}
                    <span class="error-msg" style="color: red"></span>
              </div>
            </div>
        </div>
        </form>
      </div>
      <div class="modal-footer">
          <button id="btnSave" type="button" class="btn btn-primary">添加</button>
          <button type="button" class="btn btn-default" data-dismiss="modal">取消</button>

      </div>
    </div>
  </div>
</div>

</div>

<script src="{% static 'jquery-3.7.0.min.js' %}"></script>
<script src="{% static '/bootstrap/js/bootstrap.min.js' %}"></script>
<script type="text/javascript">
    $(function () {
        bindBtnAddEvent();
        bindBtnSaveEvent();
    })
    function bindBtnAddEvent(){
        $('#btnAdd').click(function () {
            // 点击新建按钮 显示对话框
            $('#myModal').modal('show');
        });
    }

    function bindBtnSaveEvent(){
        $('#btnSave').click(function () {
            // 清楚所有的错误信息
            $('.error-msg').empty()
            // 向后台发送请求
            $.ajax({
                url:"/order_add/",
                type:'post',
                data:$('#formAdd').serialize(),
                dataType:'JSON',
                success:function (res){
                    if (res.status){
                        alert('创建成功');
                        // 清空表单 ('#formAdd') jQuery 对象 ->  $('#formAdd')[0] DOM 对象
                        $('#formAdd')[0].reset();

                        // 关闭对话框
                        $('#myModal').modal('hide');

                    }else {
                        // 把错误信息显示在对话框中
                        $.each(res.error,function (name,errorList){
                            $("#id_"+name).next().text(errorList[0])
                        })
                    }
                }
            })

        });
    }

</script>

</body>
</html>

  

标签:status,function,name,form,models,django,Ajax,添加,import
From: https://www.cnblogs.com/p4567/p/17776463.html

相关文章

  • Web前端使用 $.ajax 和 XMLHttpRequest 请求的区别
    1、首先是我使用XMLHttpRequest进行后台请求,我在请求前。会把按钮置为灰色。 $('button[type="generateProductBop"]').css("background-color","#d4d4d4");在最后的finally才把按钮,重新置换回来原来的颜色$('button[type="generateProductBop"]').css(......
  • 【Django | 开发】中间件配置(记录响应耗时日志)
    ......
  • Firefox 火狐浏览器 添加自定义搜索引擎 并屏蔽特定网站
    火狐浏览器添加自定义搜索引擎并屏蔽特定网站记录一下火狐浏览器(Firefox)添加自定义搜索引擎,并屏蔽特定网站的两种操作(注:本文用XXXX代替真实网站)。搜索引擎搜索时,有很多重复且无用的结果,部分有用的信息也需要登录关注才能看。这些内容大部分源于某些个网站,占据了大部分搜索结果......
  • celery包结构、celery延迟任务和定时任务、django中使用celery、接口缓存、双写一致性
    celery包结构project├──celery_task #celery包  这个包可以放在任意位置│├──__init__.py#包文件│├──celery.py#celery连接和配置相关文件,且名字必须叫celery.py│└──tasks.py#所有任务函数│├──add_task.p......
  • 由Django-Session配置引发的反序列化安全问题
    漏洞成因漏洞成因位于目标配置文件settings.py下关于这两个配置项SESSION_ENGINE:在Django中,SESSION_ENGINE 是一个设置项,用于指定用于存储和处理会话(session)数据的引擎。SESSION_ENGINE 设置项允许您选择不同的后端引擎来存储会话数据,例如:数据库后端 (django.contrib.sessions.b......
  • ruoyi~为字典回显添加自定义样式
    ruoyi框架的vue版本中,对字典的回显样式的设计,默认有以下几种如果希望添加一种红色字体的,可以这样实现,实现后你的回显就多了一种红色字体的样式了具体实现的方法在app.vue中,添加对象的css样式<styletype="text/css">.el-tag--redColorFont{color:#ff0000;backgro......
  • 【Django基础】
    1.索引的优化索引是提高数据库查询性能的重要手段。在Django中,我们可以使用db_index属性在模型字段上创建索引。例如:classMyModel(models.Model):my_field=models.CharField(max_length=100,db_index=True)此外,还可以使用index_together和unique_together属性创建联......
  • 关于 js ajax readyState 的阐述
    为了弄清楚ajaxreadyState的具体意义,做了如下测试:index.html1<!DOCTYPEhtml>2<htmllang="en">3<head>4<metacharset="UTF-8"/>5<metaname="viewport"content="width=device-width,init......
  • vs2019设置添加类和接口自动添加作者信息
    参考:https://www.cnblogs.com/minuhy/p/14058721.html 一、找到VisualStudio2019安装目录如我的:D:\ProgramFiles(x86)\MicrosoftVisualStudio\2019\Community\Common7\IDE\ItemTemplates\CSharp\Code\2052二、修改类模板文件 #region<<版本注释>>/*---......
  • 为ModelForm自动生成的input框添加BootStrap样式
    为了方便管理,我们在/app01/utils下新建bootstrap.pyfromdjangoimportformsclassBootStrapModelForm(forms.ModelForm):def__init__(self,*args,**kwargs):super().__init__(*args,**kwargs)#循环找到所有的插件,添加class="form-control"样......