django的Template模板总结(6)

本文主要介绍了Django的Template模板使用,包括其在工程目录下的注册方式、模板文件的位置、以及如何在views.py中调用。内容涵盖模板语法,如数据读取、注释、计算操作、大写转换、流程控制(遍历和判断)、转义开关的使用(如`safe`方法),同时讨论了模板渲染的过程,包括加载和渲染模板的步骤。
摘要由CSDN通过智能技术生成

@作用和目录位置

  • template一般用于存放html文件
  • template可以是自定义命名的
    在子应用目录下是需要注册的
    但在工程目录下需要在stting.py里注册:
    ps:还需要make为template Folter
# django默认的模板配置
TEMPLATES = [
    {
        ...,
        # 模板路径
        'DIRS': [
            os.path.join(BASE_DIR, 'templates'),
        ],

使用template下的html文件时需要在views.py里对应的方法使用

def where(request):
    students =Students.objects.all()
    datadict={
        'stu':students
    }
    return render(request,'where.html',context=datadict)

@模板语法

  • 读取数据
#根据关联查找
def func(request,num):
#获取对应的班级对象
grade = Grade.object.get(pk = num)
#获取班级下所有学生的对象列表
stulist = grade.student_set.all()
 #xxx是传过来字典的键名
 {{ xxx.attr}}//通过键名调用相关属性
 {{ ddd.i}}//ddd传过来的是容器或者集合,通过下标i调用
 {{ xxx.method }}//通过键名调用相应方法
 {{ xxx }}//xxx可以是变量,也可以是对象属性
 {{ xxx.key }}//传过来的字典里又有字典
 {% %}//实行代码或代码段

@模板内的注释

1   <!--普通HTML注释是可见的-->
2   {#  模板注释是不可见的  #}
3   {% comment %}...{% endcomment %}(也是不可见得)

@模板内的计算

  • 加法和减法
#加法:value是传过来的值
{{ value|add:10 }}//加10
#减法
{{ value|add:-10 }}//减10

乘除法

#相当于a/b*c,如果要进行2元运算则把第三个设成1 就行了
{% widthratio a b c %}

@大写转换

#大写转小写
{{ animal.a_name|lower }}
#小写转大写
{{ animal.a_name|upper }}

@流程控制(遍历和判断)

  • 遍历
#获取下标
{{ forloop.counter }}//返回的集合下标从1开始
{{ forloop.counter0 }}//返回的集合下标从0开始
{{ forloop.revcounter }}//索引从最大长度到1
{{ forloop.revcounter0 }} //索引从最大长度到0  
  • if 条件
#下面2个,在for循环中使用
{% if forloop.first %},{% if forloop.last %}
例如:
{% if forloop.first %}
...
{% elif forloop.last %}
...
{% else %}
...
{% endif %}
#判断是否相等
1 {% ifequal value1 value2 %}...{% else %}...{% endifequal %}
2 {% ifnotequal value1 value2 %}...{% else %}...{% endifnotequal %}

@转义开关
作用:就是views.py传过来的字典值是一串html代码,一般正常是按字符串输出的,如果转义后就会编译成html格式在页面输出

  • safe方法转义
{ contents|safe }//添加safe完成转义
  • 包裹起来转义
#off是关闭转义,on是开启
{% autoescape off %}
  {{ content }}  
{% endautoescape %}

@父辈挖坑子孙填
就是子类继承父类后可以在父类的模块内重写和修改

  • 兼并
{% extends 'base_main.html' %}//继承另一个模块
{% include xxx.html %}//兼并另一个模板使之成为页面的一部分
{% load static %}//不可省略
#使用block把html代码分割,extCSS是自定义命名
{% block extCSS %}
    {{ block.super }}//继承父类block的内容
...
{% endblock %}

@模板渲染过程
使用HttpResponse完成render的功能

  • 1加载模板
template = loader.get_template('Hello.html')//返回<class 'django.template.backends.django.Template'>
  • 2渲染模板
result = template.render()//返回<class 'django.utils.safestring.SafeText'> 
renturn HttpResponse(result)// 完成
result = template.render(context={"haha":"你哈什么哈"})//渲染时给模板传递数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值