Django模板

渲染模板

渲染模板有多种方式,通常使用下面两种:

  1. render_to_string: 找到模板,然后将末班编译后渲染成python字符串格式,最后再通过HttpResponse类包装成一个HttpResponse对象返回回去。实例代码如下:
from django.http import HttpResponse
from django.template.loader import render_to_string


def index(request):
    html = render_to_string("index.html")
    return HttpResponse(html)
  1. Django提供更简便的方式,直接将模板渲染字符串和包装成HttpResponse对象一步到位,实例代码如下:
from django.shortcuts import render
 render_to_string

def index(request):
    return render(request, "index.html")

模板查找路径

在项目的settings.py文件中,有一个TEMPLATES配置,这个配置包含了模板引擎的配置,模板查找路径的配置,模板上下文的配置等。模板路径可以在两个地方配置。

  1. DTRS: 这个列表存放所有的模板路径,以后在视图中使用render或者render_to_string渲染模板的时候,会在这个列表的路径中查找模板
  2. APP_DTRS:设置为True,会在INSTALLD_APPS的安装了的app下的Templates文件中查找模板
  3. 查找循序 DIRS >–检查当前视图所处的app是否安装,如果安装查找当前app的Templates文件中查找模板,如何没有则会在其他安装的app中查找;如果都没有就会抛出异常

模板变量

  1. 在模板中使用变量,需要将变量放到{{变量 }}中。
  2. 如果想要访问对象的属性,那么可以通过对象.属性名来访问。
def shouye(request):
    p = Person("战士")
    context = {
       'person': p

    }
    return render(request, "shouye.html", context=context)
    
## html
{{ person.username }}
  1. 访问字典的key对应的value,那么通过字典.key
  2. 想要访问列表或者元祖,通过对象.下标的方式进行访问,不能通过[]

常用的模板标签

if标签

  1. 所有的标签都在{% %}之间
  2. if标签有闭合标签,{% endif %}
  3. if标签的判断运算符和python的判断运算符一样
  4. 可以使用elif以及else等标签

for标签

  1. forloop.counter: 默认从1开始,如果想从0开始forloop.counter0
  2. forloop.revcounter : 当前循环的反向下标值,如果想让最后一个下标值为0则写forloop.revcounter0
  3. forloop.first: 是否是第一次遍历
  4. forloop.last: 是否是最后一次遍历
  5. for…in…empty:在遍历的对象如果没有元素的情况下会执行empty中的内容。

whith标签

  1. 在模板中,想要定义变量,可以通过with语句来实现。
  2. with语句块有两种使用方式,第一种是with xx=xxx的形式,第二种是with xxx as xx的形式
  3. 定义的变量只能在with语句块中使用

url标签

<a href="{% url 'book' %}">读书</a>

autoescape标签

verbatim标签

常用过滤器

add过滤器

{{ value1|add:value2 }}

cut过滤器

{{value|cut:"" }}

date过滤器

{{ brithday|date:"Y/m/d" }}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值