前言:
现时我们对“djangohtml模板”都比较注意,朋友们都需要了解一些“djangohtml模板”的相关知识。那么小编在网上网罗了一些有关“djangohtml模板””的相关知识,希望咱们能喜欢,朋友们快快来学习一下吧!之前的例子中,HttpResponse都是把结果直接显示在页面上,也就是页面的设计写死在视图函数的代码里的。如果想改变页面的样子,就行需要修改 Python 代码,这样很不方便。 Django 提供了模板系统,只要创建一个视图,就可以将页面的设计从代码中分离出来。
Django 做为一个 Web 框架,采用了模板来动态生成 HTML。模板包含所需 HTML 输出的静态部分以及一些描述如何插入动态内容的特殊语法。
一个 Django 项目可以配置一个或多个模板引擎。Django 为自己的模板系统(创造性地称为 Django 模板语言 (DTL))和流行的替代方案 Jinja2 提供了内置后端。其他模板语言的后端可从第三方获得。
Django 定义了一个标准的 API,用于加载和渲染模板,与后端无关。加载包括查找给定标识符的模板并对其进行预处理,通常将其编译为内存中的表示形式。渲染意味着用上下文数据插入模板并返回结果字符串。
Django 模板语言是 Django 自己的模板系统。推荐使用 DTL。由于历史原因,对模板引擎的通用支持和 Django 模板语言的实现都位于 django.template 命名空间中。
创建模板template
在 mysite 目录下创建 templates 目录,并添加 index.html 文件,目录结构如下:
为了让 Django 模板引擎能够找到 templates 路径,需要在 mysite/settings.py 文件中的 templates 节点,设置DIRS 内容。DIRS 定义了一个目录列表,引擎应该在其中按搜索顺序查找模板源文件。在下图中设置了 templates 路径在项目的根目录下。
Django 模板语言
Django 模板只是使用 Django 模板语言标记的文本文档或 Python 字符串。一些构造被模板引擎识别和解释。主要的是变量和标签。
使用上下文呈现模板。渲染用它们的值替换变量,这些值在上下文中查找,并执行标签。其他一切都按原样输出。
Django 模板语言的语法涉及四个部分:
变量
变量从上下文中输出一个值,它是一个类似字典的对象,将键映射到值。
变量被 {{ 和 }} 包围,如下所示:
My first name is {{ first_name }}. My last name is {{ last_name }}.
使用 {'first_name': 'John', 'last_name': 'Doe'} 的上下文,此模板呈现为:
My first name is John. My last name is Doe.
字典查找、属性查找和列表索引查找是用点符号实现的:
{{ my_dict.key }}{{ my_object.attribute }}{{ my_list.0 }}标签
标签在渲染过程中提供任意逻辑。这个定义故意含糊不清。例如,标签可以输出内容,用作控制结构,例如“if”语句或“for”循环,从数据库中获取内容,甚至启用对其他模板标签的访问。
标签被 {% 和 %} 包围,如下所示:
{% csrf_token %}
一些标签需要开始和结束标签:
{% if user.is_authenticated %}Hello, {{ user.username }}.{% endif %}过滤器
过滤器转换变量和标签参数的值。它们看起来像这样:
{{ django|title }}
使用 {'django': 'the web framework for perfectionists with deadlines'} 的上下文,此模板呈现为:
The Web Framework For Perfectionists With Deadlines
一些过滤器接受一个参数:
{{ my_date|date:"Y-m-d" }}使用模板语言变量输出动态内容到页面
在模板文件 index.html 中输入下列内容:
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body> <h1>{{ title }}</h1> <div>My first name is {{ first_name }}. My last name is {{ last_name }}.</div></body></html>
其中 title,first_name,last_name 都是变量。需要从 view 中传递变量的值过来。
那么就需要对 polls/views.py 的 index() 进行修改。这里就需要用到 render 对模板进行数据渲染:
from django.shortcuts import render#通过模板语言的变量进行传递信息def index(request): context = {'title':'我的站点' ,'first_name': '乙丙', 'last_name': '白'} return render(request, 'index.html', context)
保存之后。在浏览器中访问:。可以看到如下界面内容:
标签: #djangohtml模板 #css框架生成