zoukankan      html  css  js  c++  java
  • choice参数以及ajax

    on the day
    聚合查询

    ​ from django.db.models import Max,Min,Sum,Count,Avg

    ​ 需要关键字才能触发,aggregate

    分组查询

    ​ 关键字,annotate

    ​ models.点什么,就是按什么分组

    F与Q查询

    ​ from django.db.models import F,Q

    ​ F 能够帮助你获取表中字段所对应的数据

    eg:models.Book.objects.filter(kucun_gt=F('maichu'))
    

    ​ Q 与或非

    eg:models.Book.objects.filter(Q(title='python'),Q(price=666))
    eg:models.Book.objects.filter(Q(title='python')|Q(price=666))
    eg:models.Book.objects.filter(~Q(title='python')|Q(price=666))
    

    ​ Q进阶

    q = Q()
    q.connector = 'or'
    q.children.append(('title','python'))
    q.children.append(('title_icontains','python'))
    q.children.append(('price',666))
    models.Book.objects.filter(q)
    默认是and关系
    
    django开启事务操作
    from django.db import transaction
    try:
    	with transaction.atomic():
    except BaseException as e:
    	print(e)
    加入try用来防止报错,with语句下面缩进的属于同一事物,退出缩进则表示退出事物    
    
    推荐人工智能方向网站

    ​ 百度AI,图灵机器人,科大讯飞

    常见字段参数

    ​ AutoField()设置主键

    ​ DateField()

    ​ DateTimeField(auto_now/auto_add_now)

    ​ TextField()

    ​ EmailField()数据库对顶varcahr(256)

    ​ BooleanField()传布尔值,0,1

    ​ is开头的字段名一般为布尔值

    自定义char字段
    class MyCharDield(models.Field):
        def db_type(self,connection):
        return 'char(%s)'%self.max_length
    
    orm查询优化

    ​ only

    ​ defer

    ​ 获取的是对象,

    ​ select_related

    ​ peretch_related

    ​ 连表,不用走数据库

    图书管理系统

    ​ 书籍增删改查

    Today
    choice参数

    ​ get_gender_display()

    ​ 针对choice字段,获取对应中文,不能直接点字段

    ​ 固定句式 数据对象.get_字段名__display()

    ​ 当没有对应关系的时候,该句式获取的还是数字

    ​ 当我们存的某一字段名时,如果它的值是有限的,我们就可以用choice参数

    eg:性别
    choices(名字自定义) = ((1,'male'),(2,'female'),(3,'others'))
    gender = models.IntegerField(choices=choices)
    

    ​ 这个时候存性别值存的是数字 ,就算没有对应关系也是可以存的,

    ​ 取值,choice字段,对象取值只能取到数字,它有独特的取值方式

    比如性别存在用户表中
    user_obj.gender
    指挥获得1.2.3.
    user_obj.get_gender_display()
    获取male等
    choice字段取值固定句式;get_字段名_display()
    可以设置默认值,设置为存的数值
    eg:gender = models.IntegerField(choices=choices,default=1)
    
    MTV与MVC模型

    ​ django号称是MTV框架,其实还是MVC框架

    ​ MTV:M:models T:templates V;views

    ​ MVC:,M;models V;views C;contronner(路由匹配)

    ajax

    一门js技术,基于原生js开发的,但是原生的js代码过于繁琐,只学习jQuery实现ajax

    ajax最大的优点就是在不重新加载整个页面的情况下,可以与服务器交换数据更新部分网页内容(用户感受就是不知不觉间完成响应与请求过程)

    ​ 特点:

    ​ 异步提交

    ​ 同步异步任务的提交方式(同步,提交任务之后,原地等待任务的返回结果,期间不干任何事 异步,提交任务后不等待直接执行写一行代码,返回的任务通过回调机制),

    ​ 阻塞非阻塞,程序的运行状态(程序运行的三种状态图)

    ​ 局部刷新

    ​ 页面的某个地方局部刷新,

    eg:展示一个前端页面  页面上有三个输入框  前两个框输入数字 点击按钮朝后端发请求页面不刷新的情况下 完成数字的加法运算  
    <input type='text' id='t1'>+<input type='text' id='t2'>=<input type='text' id='t3'>    
    <p><button id='b1'>计算</button></p>
    $.ajax({
    //1.想哪里发送数据
    url:'',//专门控制向后端提交数据的地址,不写默认当前地址
    //2.到底发送什么请求
    type:'post',//专门定制ajax发送的请求方式
    //3.发送的数据到底是什么
    date:{'t1':$('#t1').val(),'t2':$('#t2').val()}
    //4.异步提交的任务,需要通过回调函数来处理
    success:function(data){//data形参代指的就是异步提交的返回结果
    //通过DOM操作将内容渲染到标签内容上
    $('#t3').val(data)}
    })
    

    ​ ajax传json数据

    ​ django后端针对json数据,不会解析,放在request.body中

    ​ 也可以手动处理

    手动处理方式,json反序列化
    json_bytes = request.body
    json_str = str(json_bytes,encoding='utf-8')
    json_dict = json.loads(json_str)
    

    ​ 注意事项:1.指定contentType参数 contentType:'application/json',2.确保数据json格式 data:JSON.stringify({}),

    ​ ajax传文件

    ​ 需要利用内置对象Formadata

    ​ 该对象既可以传普通键值对,也可以穿文件

    ​ 获取用户上传的文件的内容

    ​ 1.先通过jQuery查找到该标签,2.将jQuery对象转换成原生的js对象,3.利用原生js对象的方法,直接获取文件内容$('#3').files[0]

    ​ 上传:

    ​ 创建formdata对象

    ​ append(),加入上传文件

    ​ 注意事项:

    ​ contentType:false

    ​ processDatafalse

    contentType前后端传输数据编码格式

    ​ form表单 默认提交方式urlendoded

    ​ urlencoded

    ​ xxx=xxx&xxx=xxx

    ​ django后端针对这种数据格式自动解析,打包给request.POST

    ​ formdata

    ​ 也会解析,不过不会放在request.POST,而是放在request.FILES中

    ​ ajax默认提交方式urlencoded

    ​ 总结:django后端针对不同的编码格式,会有不同的处理机制以及不同的获取该数据点的方法

    ​ 前后端数据交互时一定要表名自己发的什么格式

    ​ 序列化组件,

    ​ 将用户表数据查询出来传给前端,给前端的是一个大字典,字典里面数据的一个个字段

    from django.core import serializers
    def ser(request):
    user_queryset = models.Userinfo.objects.all()
    # [{},{},{},{}]
    # user_list = []
    # for user_obj in user_queryset:
    #     user_list.append({
    #         'username':user_obj.username,
    #         'password':user_obj.password,
    #         'gender':user_obj.get_gender_display(),
    #     })
    res = serializers.serialize('json',user_queryset)
    print(res)
    return render(request,'ser.html',locals())
    

    ​ 使用ajax交互的时候,可以考虑给前端

    ajax+sweetalter
  • 相关阅读:
    Different AG groups have the exactly same group_id value if the group names are same and the ‘CLUSTER_TYPE = EXTERNAL/NONE’
    An example of polybase for Oracle
    use azure data studio to create external table for oracle
    Missing MSI and MSP files
    You may fail to backup log or restore log after TDE certification/key rotation.
    Password is required when adding a database to AG group if the database has a master key
    Use KTPASS instead of adden to configure mssql.keytab
    ardunio+舵机
    android webview 全屏100%显示图片
    glide 长方形图片显示圆角问题
  • 原文地址:https://www.cnblogs.com/jiann/p/11753155.html
Copyright © 2011-2022 走看看