1. 模板内置标签

Django常用内置标签

标签 描述
{% for %} 遍历输出变量的内容
{% if %} 对变量进行条件判断
{% csrf_token %} 生成csrf_token标签,用于防护跨站请求伪造攻击
{% url %} 引用路由配置地址,生成相应的URL地址
{% with %} 将变量名重新命名
{% load %} 加载导入Django的标签库
{% static %} 读取静态资源文件
{% extends xxx %} 模板继承,xxx为模板文件名,使当前模板继承xxx模板
{% block xxx %} 重写父类模板的代码
  • {% url %}

    相关的路由地址: path('search/<int:page>',search_views,name='search')

    <a href="{% url 'search' 1%}">第一页</a>

    字符串search是URL的参数name的值,1是URL的变量page的值

for标签模板变量说明

变量 描述
forloop.counter 当前循环索引,从1开始计算
forloop.counter0 当前循环索引,从0开始计算
forloop.revcounter 索引从最大数开始递减,直到索引到1的位置
forloop.revcounter0 索引从最大数开始递减,直到索引到0的位置
forloop.first 当遍历的元素第一项为真
forloop.last 当遍历的元素最后一项为真
forloop.parentloop 在嵌套的for循环中,获取上层for循环的forloop

2. 模板内置过滤器

参考:

官方文档

Django过滤器

3. 模型字段

参考:

官方文档

django中models field详解

4. 数据查询

  • 单表查询

    # all 全表查询
    ps = Product.objects.all()
    # 查询前5条
    ps = Product.objects.all()[:5]
    # values 查询某个字段
    ps = Product.objects.values('ttype')
    # distinct 去掉重复的
    ps = ps.distinct()
    # values_list 查询多个字段,列表元素以元组格式表示
    ps = Product.objects.values_list('name','price')[:5]
    # get 返回一条数据,没有查询到会报错
    p = Product.objects.get(id=3)
    print(p)
    # filter 可返回空,返回列表
    ps = Product.objects.filter(ttype="手机")
    # SQl的or查询
    from django.db.models import Q
    ps = Product.objects.filter(Q(ttype="手机")|Q(ttype="出行"))
    # count 统计数量
    counter = Product.objects.all().count()
    print(counter)
    根据价格降序排列
    默认升序,降序加"-"
    ps = Product.objects.order_by("-price")
    from django.db.models import Sum,Count,Avg
    # annotate返回一个列表
    # 分组后进行操作
    # 数量统计
    ps = Product.objects.values('ttype').annotate(Count('price'))
    # 求和
    ps = Product.objects.values('ttype').annotate(Sum('price'))
    # 求平均数
    ps = Product.objects.values('ttype').annotate(Avg('price'))
    from django.db.models import Sum,Count,Avg
    # aggregate返回一个字典
    p = Product.objects.aggregate(type_count=Count('ttype'))
    p = Product.objects.aggregate(Sum('id'))
    p = Product.objects.aggregate(Avg('price'))
    print(p,type(p))
  • 匹配符

    匹配符 说明
    __exact 精确等于
    __iexact 精确等于,忽略大小写
    __contains 模糊匹配
    __icontains 模糊匹配,忽略大小写
    __gt 大于
    __gte 大于等于
    __lt 小于
    __lte 小于等于
    __in 判断是否在列表内
    __startswith 以...开头
    __istartswith 以...开头,忽略大小写
    __endswith 以...结束
    __iendswith 以...结束,忽略大小写
    __range 在...范围内
    __year 日期字段的年份
    __month 日期字段的月份
    __day 日期字段的天数
    __isnull 判断是否为空
  • 多表查询

    t = ProductType.objects.get(id=1)
    # 正向查询
    print(t.typename)
    # 反向查询
    print(t.product_set.values('name'))
    # 查询Product的字段name和模型ProductType的字段typename
    ps = Product.objects.select_related('tttype').values('name','tttype__typename')
    # 查询两个模型的全部数据
    ps = Product.objects.select_related('tttype').all()
    • 以模型Product作为查询对象主体,也可以使用模型ProductType,只要两表之间有外键关联即可

    • 设置select_related的参数值为"tttype",该参数值是Product定义的tttype字段

    • 如果在查询过程中需要使用另一个数据表的字段,可以使用"外键__字段名"来指向该表的字段

<玩转Django2.0>读书笔记:模板和模型的更多相关文章

  1. <玩转Django2.0>读书笔记:表单

    1. 表单字段 参考: 官方文档 Django表单字段汇总 2. 表单代码示例(forms.Form) # form.py代码 # 获取数据库数据 choices_list = [(i+1,v['ty ...

  2. <玩转Django2.0>读书笔记:URL规则和视图

    1. 带变量的URL #urls.py from django.urls import path from .view import * urlpatterns = [ path('',index_v ...

  3. <玩转Django2.0>读书笔记:邮件和分页

    1. 发送邮件 # settings.py设置 # 邮箱设置 EMAIL_USE_SSL = True # 邮件服务器 EMAIL_HOST = 'smtp.qq.com' # 邮件服务端口 EMAI ...

  4. 《玩转Django2.0》读书笔记-探究视图

    <玩转Django2.0>读书笔记-探究视图 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 视图(View)是Django的MTV架构模式的V部分,主要负责处理用户请求 ...

  5. 《玩转Django2.0》读书笔记-编写URL规则

    <玩转Django2.0>读书笔记-编写URL规则 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. URL(Uniform Resource Locator,统一资源定位 ...

  6. 《玩转Django2.0》读书笔记-Django配置信息

    <玩转Django2.0>读书笔记-Django配置信息 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 项目配置是根据实际开发需求从而对整个Web框架编写相应配置信息. ...

  7. 《玩转Django2.0》读书笔记-Django建站基础

    <玩转Django2.0>读书笔记-Django建站基础 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.网站的定义及组成 网站(Website)是指在因特网上根据一 ...

  8. 《深入了解java虚拟机》高效并发读书笔记——Java内存模型,线程,线程安全 与锁优化

    <深入了解java虚拟机>高效并发读书笔记--Java内存模型,线程,线程安全 与锁优化 本文主要参考<深入了解java虚拟机>高效并发章节 关于锁升级,偏向锁,轻量级锁参考& ...

  9. 玩转 Django2.0 笔记1

    模板静态  路由 urls.py urlpatterns = [ path("<year>/<int:month>/<slug:day>",my ...

随机推荐

  1. reduce/filter/map/zip/isinstance/list列表推导式

  2. 你真的了解word-wrap和word-break的区别吗?

    这两个东西是什么,我相信至今还有很多人搞不清,只会死记硬背的写一个word-wrap:break-word;word-break:break-all;这样的东西来强制断句,又或者是因为这两个东西实在是 ...

  3. pyQt5不让进度条卡住

    这里我们用一个更新程序做示例, 下载文件的过程中让进度条实时显示下载进度. 如果下载和更新进度条的工作都放在一个线程中,会出现进度条卡顿的情况. Qt中正确的做法是把界面刷新和工作任务交给不同的线程去 ...

  4. app接口中Http请求头示例

    POST /v5/simProduct/getProductDetails HTTP/1.1 Accept:image/jsonHost: netroam.mihome.xiaomi.netUser- ...

  5. [经验交流] kubernetes v1.11 更新了高可用方案

    kubernetes v1.11已经发布了一段时间,和以前相比,一个显著亮点是更新了高可用方案: https://kubernetes.io/docs/setup/independent/high-a ...

  6. spring boot集成swagger,自定义注解,拦截器,xss过滤,异步调用,guava限流,定时任务案例, 发邮件

    本文介绍spring boot集成swagger,自定义注解,拦截器,xss过滤,异步调用,定时任务案例 集成swagger--对于做前后端分离的项目,后端只需要提供接口访问,swagger提供了接口 ...

  7. 三种工具绘制errorbar图

    误差棒是数据可变性的图形表示,并用于图表以指示所报告的测量中的误差或不确定性.他们给出了测量精确度的一般概念,或者相反,距报告值有多远,真实(无误差)值可能是多少.误差线通常代表不确定度的一个标准偏差 ...

  8. 适用于typecho0.9的评论表情插件

    依旧是寻找插件,实在是太累人,很多插件现在更新后不支持typecho0.9了,今天想给评论框加一个表情拓展,发现新版本的插件完全不兼容typecho0.9,无奈用回旧版本····· 实际上,旧版本的插 ...

  9. QT windeployqt

    qt发布release版本时需要打包一些dll,需要哪些呢?请看截图: 在qt的安装包下找到这些文件,放在release文件夹下即可,当然有些时候也会需要一些其他的,比如含有串口的程序还需要加入Qt5 ...

  10. activemq之python使用stomp协议

    参考链接: 安装:https://pypi.org/project/stomp.py/4.1.8/#history https://www.cnblogs.com/andylhc/p/9337945. ...