首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Django框架模版引擎详解

作为一个Web框架,Django需要一种动态生成HTML的便捷方法。最常用的方法依赖于模板。

模板包含所需的HTML输出的静态部分以及描述动态内容将被插入的某些特殊语法。

模版引擎的配置

web/web/settings.py   TEMPLATES

# 默认情况下,只需要创建模版存放的目录 web/templates

# 在settings.py 的配置文件中 模版引擎配置项中 定义模版目录即可

TEMPLATES = [

  {

       'BACKEND': 'django.template.backends.django.DjangoTemplates',

       'DIRS': [os.path.join(BASE_DIR,'templates')],

       'APP_DIRS': True,

       'OPTIONS': {

           'context_processors': [

               'django.template.context_processors.debug',

               'django.template.context_processors.request',

               'django.contrib.auth.context_processors.auth',

               'django.contrib.messages.context_processors.messages',

          ],

      },

  },

]模版引擎的使用

在需要解析模版的视图函数中,使用render函数就可以加载模版文件

def index(request):

   # render有三个参数,第一个参数是请求对象,第二个参数是响应模版文件,第三个参数是字典,传递给模版的数据

   # love = 'iloveyoutosimida'

   return render(request,'index.html',{'lovestr':love})模版引擎的语法1.变量的使用

基本语法:

{{ var }}

当模版引擎遇到一个变量,将计算这个变量,然后将变量结果输出

变量名必须是由字母,数字,下划线和点组成

当模版引擎遇到点 . ,会按照以下顺序进行结果的解析

按照字典解析 var['bar']

按照对象的属性或方法进行解析。var.bar

按照数字索引进行解析  var[2]

如果变量不存在,也不会报错,模版会插入空字符串 ‘ ’

在模版中使用变量或方法时,不能使用小括号,中括号,大括号等。

调用方法时,不能传递参数

2.标签的使用

循环,流程控制,等其他功能的语法

语法:

{% tag %}for循环标签

{% for k,v in vardict.items %}

{{ k }} {{ v }}

{% endfor %}if流程控制标签

{% if vardict.age > 20 %}

年轻人

{% else %}

小青年

{% endif %}

Comment 注释标签

单行注释标签:{# {{ var }} #}

{% comment %}

  {% if vardict.age > 20 %}

    年轻人

  {% else %}

    小青年

  {% endif %}

{% endcomment %}

CSRF标签

{% csrf_token %}

# 一般用在表单内,会自动的生成一个隐藏的表单项

url反向解析标签

{% url 'routename' args %}3.过滤器

语法:

# 可以对前面的变量进行计算处理在输出

{{ 变量|过滤器 }}

# 1. 简单的大小写转换

{{ varstr | upper }} {{ varstr | lower }}

# 2. join过滤器

{{ arr|join:"," }}

# 3.求长度

{{ arr|length }}

# 4.设置默认值

{{  info|default:"这个人很懒,什么都没有留下" }}

# 5.关闭自动转移 safe

{{ varhtml|safe }}

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200611A04O1T00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券