django基础知识之定义模板:

定义模板

  • 模板语言包括

    • 变量
    • 标签 { % 代码块 % }
    • 过滤器
    • 注释{# 代码或html #}

变量

  • 语法:
{{ variable }}
  • 当模版引擎遇到一个变量,将计算这个变量,然后将结果输出
  • 变量名必须由字母、数字、下划线(不能以下划线开头)和点组成
  • 当模版引擎遇到点("."),会按照下列顺序查询:
    1. 字典查询,例如:foo["bar"]
    2. 属性或方法查询,例如:foo.bar
    3. 数字索引查询,例如:foo[bar]
  • 如果变量不存在, 模版系统将插入‘‘ (空字符串)
  • 在模板中调用方法时不能传递参数

在模板中调用对象的方法

  • 在models.py中定义类HeroInfo
from django.db import models

class HeroInfo(models.Model):
    ...
    def showName(self):
        return self.hname
  • 在views.py中传递HeroInfo对象
from django.shortcuts import render
from models import *

def index(request):
    hero = HeroInfo(hname=‘abc‘)
    context = {‘hero‘: hero}
    return render(request, ‘temtest/detail.html‘, context)
  • 在模板detail.html中调用
{{hero.showName}}

标签

  • 语法:{ % tag % }
  • 作用
    • 在输出中创建文本
    • 控制循环或逻辑
    • 加载外部信息到模板中供以后的变量使用
  • for标签
{ %for ... in ...%}
循环逻辑
{{forloop.counter}}表示当前是第几次循环
{ %empty%}
给出的列表为或列表不存在时,执行此处
{ %endfor%}
  • if标签
{ %if ...%}
逻辑1
{ %elif ...%}
逻辑2
{ %else%}
逻辑3
{ %endif%}
  • comment标签
{ % comment % }
多行注释
{ % endcomment % }
  • include:加载模板并以标签内的参数渲染
{ %include "foo/bar.html" % }
  • url:反向解析
{ % url ‘name‘ p1 p2 %}
  • csrf_token:这个标签用于跨站请求伪造保护
{ % csrf_token %}
  • 布尔标签:and、or,and比or的优先级高
  • block、extends:详见“模板继承”
  • autoescape:详见“HTML转义”

过滤器

  • 语法:{ { 变量|过滤器 }},例如{ { name|lower }},表示将变量name的值变为小写输出
  • 使用管道符号 (|)来应用过滤器
  • 通过使用过滤器来改变变量的计算结果
  • 可以在if标签中使用过滤器结合运算符
if list1|length > 1
  • 过滤器能够被“串联”,构成过滤器链
name|lower|upper
  • 过滤器可以传递参数,参数使用引号包起来
list|join:", "
  • default:如果一个变量没有被提供,或者值为false或空,则使用默认值,否则使用变量的值
value|default:"什么也没有"
  • date:根据给定格式对一个date变量格式化
value|date:‘Y-m-d‘
  • escape:详见“HTML转义”
  • 点击查看详细的过滤器

注释

  • 单行注释
{#...#}
  • 注释可以包含任何模版代码,有效的或者无效的都可以
{# { % if foo % }bar{ % else % } #}
  • 使用comment标签注释模版中的多行内容
时间: 2024-10-12 15:38:30

django基础知识之定义模板:的相关文章

Django框架基础知识05-自定义模板标签与过滤器

根据一定规则,自己定义出符合需求功能的.用在任何你有需求的地方,因为内置的满足不了我们的需求,不同的东西有不同的定义规则 目前最最重要的就是HOW 一 文件路径配置: templates 存放自定义 某个app特有的自定义标签:存放模板的目录:在app目录下创建一个python package,在其中新建templatetags标签及过滤器的目录 目录结构: 注意:templatetags这个目录名字是固定的,而里面的模块名是自定义的. 模板过滤器的分析: {{ var|foo:"bar&quo

django基础知识之定义视图:

定义视图 本质就是一个函数 视图的参数 一个HttpRequest实例 通过正则表达式组获取的位置参数 通过正则表达式组获得的关键字参数 在应用目录下默认有views.py文件,一般视图都定义在这个文件中 如果处理功能过多,可以将函数定义到不同的py文件中 新建views1.py #coding:utf-8 from django.http import HttpResponse def index(request): return HttpResponse("你好") 在urls.p

django基础知识之定义模型:

定义模型 在模型中定义属性,会生成表中的字段 django根据属性的类型确定以下信息: 当前选择的数据库支持字段的类型 渲染管理表单时使用的默认html控件 在管理站点最低限度的验证 django会为表增加自动增长的主键列,每个模型只能有一个主键列,如果使用选项设置某属性为主键列后,则django不会再生成默认的主键列 属性命名限制 不能是python的保留关键字 由于django的查询方式,不允许使用连续的下划线 定义属性 定义属性时,需要字段类型 字段类型被定义在django.db.mode

Django[基础知识]

Python功能最全的WEB框架:Django,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. 使用Django需进行以下操作: 1.创建Django项目,创建方式有两种. a.命令操作: django-admin startproject  dg_web   //dg_web为项目名称 b.直接在开发环境IDE下进行新建django项目 创建项目之后的文件目录如下: 2.在创建的项目下建立功能程序,操作如下: 命令行:python manage.py startap

django基础知识之分页:

分页 Django提供了一些类实现管理数据分页,这些类位于django/core/paginator.py中 Paginator对象 Paginator(列表,int):返回分页对象,参数为列表数据,每面数据的条数 属性 count:对象总数 num_pages:页面总数 page_range:页码列表,从1开始,例如[1, 2, 3, 4] 方法 page(num):下标以1开始,如果提供的页码不存在,抛出InvalidPage异常 异常exception InvalidPage:当向page

django基础知识之URLconf:

URLconf 在settings.py文件中通过ROOT_URLCONF指定根级url的配置 urlpatterns是一个url()实例的列表 一个url()对象包括: 正则表达式 视图函数 名称name 编写URLconf的注意: 若要从url中捕获一个值,需要在它周围设置一对圆括号 不需要添加一个前导的反斜杠,如应该写作'test/',而不应该写作'/test/' 每个正则表达式前面的r表示字符串不转义 请求的url被看做是一个普通的python字符串,进行匹配时不包括get或post请求

django基础知识之Ajax:

使用Ajax 使用视图通过上下文向模板中传递数据,需要先加载完成模板的静态页面,再执行模型代码,生成最张的html,返回给浏览器,这个过程将页面与数据集成到了一起,扩展性差 改进方案:通过ajax的方式获取数据,通过dom操作将数据呈现到界面上 推荐使用框架的ajax相关方法,不要使用XMLHttpRequest对象,因为操作麻烦且不容易查错 jquery框架中提供了$.ajax.$.get.$.post方法,用于进行异步交互 由于csrf的约束,推荐使用$.get 示例:实现省市区的选择 最终

django基础知识之Response对象:

HttpResponse对象 在django.http模块中定义了HttpResponse对象的API HttpRequest对象由Django自动创建,HttpResponse对象由程序员创建 不调用模板,直接返回数据 #coding=utf-8 from django.http import HttpResponse def index(request): return HttpResponse('你好') 调用模板 from django.http import HttpResponse

Django基础,Day10 - template 模板引擎与路径设置

作为一个Web框架,Django需要一个方便的方式来生成动态的HTML.最常见的方法依赖于模板.模板包含所需的HTML输出的静态部分以及一些特殊的语法描述如何插入动态内容. Django框架后端默认支持自生内置的一套模板系统DTL(Django Template Language) 和 有名的Jinja2模板系统.当然,也可以从第三方模块中之前其他模板系统.如果没有特殊要求,建议使用Django自带的DTL模板系统,这也是django 1.8之前唯一可以的内置选项. TEMPLATE 默认配置