linRichielinRichie
前端
Python
Linux
ChatGPT
  • B 站
  • 500px
前端
Python
Linux
ChatGPT
  • B 站
  • 500px
    • Python学习指南
  • 快速开始

    • Python: 输入与输出 (I/O)
    • Python: 异常处理 try-except
    • Python: List深入概述
    • Python: 面向对象编程(OOP)
  • Python 语法库函数

    • 语法库目录
    • 库

      • library目录
      • argparse:解析命令行参数
      • difflib:比较序列并生成差异信息
      • dnspython: DNS处理库
      • IPy:IP地址处理库
      • logging:记录和管理日志信息
      • os:访问和操作操作系统
      • psutil:系统性能信息库
      • re:正则表达式库
      • smtplib:邮件发送库
    • 函数

      • function目录
      • any() 函数
      • input 函数
      • lambda 和 map 函数
      • reversed()函数
      • zip()函数
    • 语句

      • statement目录
      • import 语句
      • Try/Exception 异常
    • 概念

      • concept目录
      • 深拷贝与浅拷贝
      • 列表、字典与元组
      • 文件读写
      • IO: 输入与输出
      • 逻辑判断与条件语句
      • OOP 面向对象:class
      • OOP: 面向对象编程
  • SQLAlchemy

    • 获取insert或者update的id
  • Pandas

    • Pandas目录
    • Pandas:基础操作
    • Pandas:数据处理与转换
    • Pandas: 数据写入 excel 表格
  • Python前端框架

    • Flask

      • 1. Flask简介
      • 2. Flask程序基本结构
      • 3. Flask请求-响应循环
      • 4. flask案例: 框架网页查询IP
      • Python: Flask中的GitHub OAuth
    • Django

      • chapter-01:Django框架认识

        • 1.1 Django的产生背景
        • 1.2 MTV设计模式
        • 1.3 Django 主要功能模块
      • chapter-02:开发环境配置

        • 2.1 Python的安装与配置
        • 2.2 虚拟环境安装与配置
        • 2.3 Django安装与配置
        • 2.4 MySQL安装配置
      • chapter-03:项目框架搭建

        • 3.1 Django管理工具-创建项目骨架
        • 3.2 修改项目的默认配置
        • 3.3 初始化项目环境
      • chapter-04:ORM应用与原理剖析

        • 4.1 构建POST应用需要的数据集
        • 4.2 Model相关的概念和使用方法
        • 4.3 Model的查询操作API
        • 4.4 ORM实现原理
      • chapter-05:Django管理后台

        • 5.1 将Model注册到管理后台
        • 5.2 管理后台实现原理
      • chapter-06:视图

        • 6.1 视图基础
        • 6.2 视图的高级特性和快捷方法
        • 6.3 基于类的通用视图
      • chapter-07:模板系统

        • 7.1 模板系统基础
        • 7.2 模板语言
      • chapter-08:表单系统

        • 8.2 使用表单系统实现表单: ModelForm
      • chapter-09:用户认证系统

        • 9.1 用户与身份认证
        • 9.2 权限管理
        • 9.3 用户认证系统应用
      • chapter-10:Django路由系统

        • 10.1 路由系统基础
      • chapter-11:Django中间件

        • 11.1 中间件基础
  • Python例子

    • Python: Linux的Shell命令
    • Python: PEP8自动格式化代码
    • Python: pip操作
    • Python: 业务服务监控
    • Python: 从文件逐行读取数据
    • 将链表转换为字符串
    • Python: 检查URL是否能正常访问
    • Python: 爬取网易云音乐
    • Python: 读取目录下的所有内容
    • 案例研究:文本统计
  • Python爬虫

    • 数据解析工具:Xpath
  • 算法题

    • 02:两数相加
    • 09:回文数
    • 13:罗马数值转换为整数
    • 14:最长公共前缀

7.2 模板语言

  • 7.2 模板语言
    • 7.2.1 基本语法 {{}} {% %}
      • 方法调用
      • for循环
      • 获取视图访问地址的url标签
      • 多行注释的comment标签
      • 判断变量相等或不相等的标签
    • 7.2.2 过滤器(|)
    • 7.2.3 模板继承(block)

7.2.1 基本语法 {{}} {% %}

方法调用

不想索引调用需要设置alters_data=True

  • 例子
class A:
    def z(self):
        return 'Django'
    z.alters_data = True

for循环

在for标签的内部,可以通过访问forloop变量的属性获取迭代过程中的一些信息
forloop.counter从1开始计数。除此之外,forloop还包含如下一些属性。

  • (1)counter0:与counter一样用来计数,但是它从0开始。
  • (2)revcounter:用来表示当前循环中剩余元素的数量。第一次迭代时,返回的是列表中元素的总数,最后一次的返回值是1。
  • (3)revcounter0:与revcounter的含义相同,但是由于其索引是基于0的,因此它的值等于revcounter减去1。
  • (4)first:返回一个布尔值,True标识为当前迭代的是第一个元素,其他位置的元素返回False。
  • (5)last:也是一个布尔值,迭代最后一个元素时返回True,其他情况为False。
  • (6)parentloop:对于嵌套迭代的场景,用来引用父级循环的forloop变量。
  • 需要注意,forloop只可以在for与endfor之间使用。对于first和last属性,可以通过if标签对特定的元素做特殊处理,而像counter这类属性,常常用于调试程序。

获取视图访问地址的url标签

  • 格式:{% url 'ns:name' arg1,arg2,.... %}
  • 其中,ns是视图的命名空间,name是视图的名称。如果需要,还可以给定参数构造动态的url
  • 例如:{% url 'post:hello' %}

多行注释的comment标签

  • 格式
{% comment %}
{% endcomment %}

判断变量相等或不相等的标签

  • 提供了ifequal和ifnotequal标签,用于判断变量是否相等
  • v1、v2除了可以是模板变量,也可以是硬编码的字符串、整数或小数,但不可以是字典、列表等类型
{% ifequal v1 v2 %}
{% else %}
{% endifqueal%}

7.2.2 过滤器(|)

过滤器用于在显示变量之前对变量的值进行调整,它们在模板中很常见,使用管道符号(|)指定;有些过滤器可以接受参数,如果参数中带有空格,则需要用引号括起来 参考:https://weread.qq.com/web/reader/6e4329007193f1e66e43129k19c3222022419ca14e7eef7

7.2.3 模板继承(block)

  • 模板继承使用起来非常简单,只需要定义好被继承的父模板,其中包含通用元素和可以被子模板覆盖的block部分即可

  • (1)block标签成对出现,需要{%endblock%}标记结束。

  • (2)需要给block标签起个名字,子模板中具有同样名称的block块完成对父模板的替换。

  • (3)子模板不需要定义父模板中的所有block,未定义时,子模板将原样使用父模板中的内容。

  • (4)子模板需要使用{%extends%}标签继承父模板,且其必须是模板中的第一个标签,通常继承声明会放在文件的第一行

  • {{block.super}}变量,可以获取到父模板中渲染后的结果

Django建议,父模板中的{%block%}标签应该越多越好,毕竟,子模板不需要完全重写所有的标签,所以,可以多定义一些通用或者默认的内容

最近更新时间:
Prev
7.1 模板系统基础