zoukankan      html  css  js  c++  java
  • DAY80-Django框架(十)

    一、事务

    ​ 当你对两条记录操作,第一条记录成功,但是第二条失败的话,应该把之前的操作无效化,进行回滚。

    语法

    from django.db import transaction
    with transaction.atomic():
        #写数据操作,一旦发生异常就回滚到上方
    

    二、模型层补充之choice

    class Author(models.Model):
        id = models.AutoField(primary_key=True)
        name = models.CharField(max_length=32)
     	#在模型表定义变量choicess
        choicess=((1,'男'),(2,'女'),)
        sex = models.IntegerField(choices=choicess)
        
        
    #在视图层get_字段名_display(),1转换为男显示,2转换为女显示
    author.get_sex_display()
    

    三、数据库优化之defer和only

    #only:取指定的字段,返回值是queryset里套对象,只有指定的字段
    #defer:取指定的字段以外的,返回值是queryset里套对象,只有指定以外的字段
    
    #只会获得name字段
    models.Author.objects.only('name')
    #都是取得所有的,然后只显示name
    models.Author.objects.all().value('name') | .filter('name')
    
    #减少对数据库的压力
    

    四、模板层之inclusion_tag

    1.先注册app

    2.在app下创建一个templatetags的模块

    3.在模块下新建一个py文件

    my_tags.py

    from django.template import Library
    
    register=Library()#名字必须叫register
    
    #使用装饰器:@register.inclusion_tag()
    @register.inclusion_tag('result.html')
    def show_results(n):
        n = 1 if n < 1 else int(n)
        data = ["第{}项".format(i) for i in range(1, n+1)]
        return {"data": data}
    	#返回字典
    

    4.模板里就能取到字典,渲染模板

    模板:result.html

    <ul>
      {% for choice in data %}
        <li>{{ choice }}</li>
      {% endfor %}
    </ul>
    

    5.使用:

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta http-equiv="x-ua-compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <title>inclusion_tag test</title>
    </head>
    <body>
     <!-- 加载my_tags.py-->
    {% load my_tags %}
     <!-- 使用,传入参数-->  
    {% show_results 10 %}
    </body>
    </html>
    
  • 相关阅读:
    激活win10系统的方法(亲测)
    java使用jxl,自动导出数据excle,quartz自动发送邮件
    java对接网银支付案例
    将数字转换成Excel表头格式的字母序号
    mysql date_add日期函数的使用
    itext A4纸张横向创建PDF
    Spring 定时器 定时访问数据库并发送邮件
    mvc路由报错
    eval()和$.parseJSON()注意事项
    跨域学习笔记
  • 原文地址:https://www.cnblogs.com/xvchengqi/p/9971457.html
Copyright © 2011-2022 走看看