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

作为一个Web框架,Django需要一个方便的方式来生成动态的HTML。最常见的方法依赖于模板。模板包含所需的HTML输出的静态部分以及一些特殊的语法描述如何插入动态内容。

Django框架后端默认支持自生内置的一套模板系统DTL(Django Template Language) 和 有名的Jinja2模板系统。当然,也可以从第三方模块中之前其他模板系统。如果没有特殊要求,建议使用Django自带的DTL模板系统,这也是django 1.8之前唯一可以的内置选项。

TEMPLATE 默认配置

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‘,
            ],
        },
    },
]

BACKEND:模板引擎类的python路径,内置的模板引擎分别有‘django.template.backends.django.DjangoTemplates‘和‘django.template.backends.jinja2.Jinja2

DIRS:模板引擎搜索模板的路径,如上,默认搜索project目录下的templates目录

APP_DIRS:告诉模板引擎是否搜索app目录下的templates目录。默认为true,即是默认搜索app目录下的templates目录

实例说明

根据前面章节的实例,可见我们使用了默认的TEMPLATE设置,html页面直接存放在app目录下的template目录下,如 polls/templates/polls/index.html.

在view.index 中直接使用

return render(request, ‘polls/index.html‘, context)

即可渲染到polls/index.html 页面。

如果设置为 ‘APP_DIRS‘: False,则会搜索模板失败,如:

根据错误信息,可见模板引擎搜索模板的路径在project下的templates中。如果将index.html 移动到mysite\templates\polls\index.html 中即可访问。

若以上 ‘APP_DIRS‘: True,且同时存在

mysite\templates\polls\index.html

mysite\polls\templates\polls\index.html

则会访问 mysite\templates\polls\index.html 而不是 mysite\polls\templates\polls\index.html

多模板引擎设置

Django项目可以配置一个或多个模板引擎(甚至是零,如果你不使用模板)。

TEMPLATES = [
    {
        ‘BACKEND‘: ‘django.template.backends.django.DjangoTemplates‘,
        ‘DIRS‘: [
            ‘/home/html/example.com‘,
            ‘/home/html/default‘,
        ],
    },
    {
        ‘BACKEND‘: ‘django.template.backends.jinja2.Jinja2‘,
        ‘DIRS‘: [
            ‘/home/html/jinja2‘,
        ],
    },
]

If you call get_template(‘story_detail.html‘), here are the files Django will look for, in order:

  • /home/html/example.com/story_detail.html (‘django‘ engine)
  • /home/html/default/story_detail.html (‘django‘ engine)
  • /home/html/jinja2/story_detail.html (‘jinja2‘ engine)

If you call select_template([‘story_253_detail.html‘, ‘story_detail.html‘]), here’s what Django will look for:

  • /home/html/example.com/story_253_detail.html (‘django‘ engine)
  • /home/html/default/story_253_detail.html (‘django‘ engine)
  • /home/html/jinja2/story_253_detail.html (‘jinja2‘ engine)
  • /home/html/example.com/story_detail.html (‘django‘ engine)
  • /home/html/default/story_detail.html (‘django‘ engine)
  • /home/html/jinja2/story_detail.html (‘jinja2‘ engine)

When Django finds a template that exists, it stops looking.

时间: 2024-10-02 23:57:31

Django基础,Day10 - template 模板引擎与路径设置的相关文章

Django基础,Day9 - 静态文件目录与路径设置说明(eg. images, JavaScript, CSS)

静态文件路径设置官方说明 1. Make sure that django.contrib.staticfiles is included in your INSTALLED_APPS. 2. In your settings file, define STATIC_URL, for example:    STATIC_URL = '/static/' 3. Store your static files in a folder called static in your app. For e

django基础知识之模板:

模板介绍 作为Web框架,Django提供了模板,可以很便利的动态生成HTML 模版系统致力于表达外观,而不是程序逻辑 模板的设计实现了业务逻辑(view)与显示内容(template)的分离,一个视图可以使用任意一个模板,一个模板可以供多个视图使用 模板包含 HTML的静态部分 动态插入内容部分 Django模板语言,简写DTL,定义在django.template包中 由startproject命令生成的settings.py定义关于模板的值: DIRS定义了一个目录列表,模板引擎按列表顺序

JavaScript中template模板引擎

template.js 一款 JavaScript 模板引擎,简单,好用.提供一套模板语法,用户可以写一个模板区块,每次根据传入的数据,生成对应数据产生的HTML片段,渲染不同的效果. 1.特性 (1).性能卓越,执行速度通常是 Mustache 与 tmpl 的 20 多倍(性能测试)(2).支持运行时调试,可精确定位异常模板所在语句(演示) (3).对 NodeJS Express 友好支持(4).安全,默认对输出进行转义.在沙箱中运行编译后的代码(Node版本可以安全执行用户上传的模板)

[JavaWeb基础] 019.Velocity 模板引擎简单示例

1.什么是Velocity 一种J2EE的前端模版技术,和JSP,Freemarker差不多,都是用来展示网页内容的.和JSP不同的是velocity只能显示Action中的数据,不能处理数据.不能写java代码,但是可以使用Velocity标记.也就是说把显示代码和后端的JAVA代码分离开来,降低程序的耦合性 2.需要引入哪些Jar包 velocity-1.5.jar,velocity-1.6.2.jar,velocity-tools-2.0.jar,velocity-tools-generi

Django基础四之模板系统

一 语法   模板渲染的官方文档 关于模板渲染你只需要记两种特殊符号(语法): {{  }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 二 变量 在Django的模板语言中按此语法使用:{{ 变量名 }}. 当模版引擎遇到一个变量,它将计算这个变量,然后用结果替换掉它本身. 变量的命名包括任何字母数字以及下划线 ("_")的组合. 变量名称中不能有空格或标点符号. 深度查询据点符(.)在模板语言中有特殊的含义.当模版系统遇到点("."),它将以这样

django基础知识之模板继承:

模板继承 模板继承可以减少页面内容的重复定义,实现页面内容的重用 典型应用:网站的头部.尾部是一样的,这些内容可以定义在父模板中,子模板不需要重复定义 block标签:在父模板中预留区域,在子模板中填充 extends继承:继承,写在模板文件的第一行 定义父模板base.html { %block block_name%} 这里可以定义默认值 如果不定义默认值,则表示空字符串 { %endblock%} 定义子模板index.html { % extends "base.html" %

Smarty 模板引擎下缓存设置

缓存:就是将用户重复使用的内容进行缓存生成HTML内容. 缓存类型 全局缓存: 将整个页面内容都生成静态内容. Cache_dir: 缓存目录配置 Cache_lifetime:缓存的有效周期 Cacheing:设置是否开启缓存 局部缓存: 控制整个页面中的某个内容缓存,或者某个内容不缓存. insert函数调用的内容不缓存: 定义insert类型的函数: Smarty 2.x版本: Function insert_插件名(参数列表){ 功能代码 } Smarty 3.x版本: Function

模板引擎

模板引擎 Tornado中的模板语言和django中类似,模板引擎将模板文件载入内存,然后将数据嵌入其中,最终获取到一个完整的字符串,再将字符串返回给请求者. Tornado =的模板支持“控制语句”和“表达语句”,控制语句是使用 {% 和 %} 包起来的 例如 {% if len(items) > 2 %}.表达语句是使用 {{ 和 }} 包起来的,例如 {{ items[0] }}. 控制语句和对应的 Python 语句的格式基本完全相同.我们支持 if.for.while 和 try,这些

python小白-day15 Django基础

Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. django简介 Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的软件设计模式,即模型M,视图V和控制器C.它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件.并于2005年7月在BSD许可证下发布.这套框架是以比