python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > django template 模板渲染

django template 模板渲染的实现

作者:耿雨飞

Django 的模板系统旨在使设计人员能够编写 HTML,同时以一种安全和灵活的方式动态显示数据,本文主要介绍了django template模板渲染的实现,具有一定的参考价值,感兴趣的可以了解一下

前言

Django 的模板系统是一个强大的工具,它将视图逻辑与页面设计分开,使得前后端开发人员可以在同一项目中高效协作。以下是对 Django 模板渲染功能的详细解析。

Django 模板系统概述

Django 的模板系统旨在使设计人员能够编写 HTML,同时以一种安全和灵活的方式动态显示数据。这种分离关注点的设计允许后端开发人员处理业务逻辑,而模板专注于数据的展示。

模板文件

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

模板语法

变量: 使用双大括号 {{ }} 包裹变量名以显示变量的值。

<p>Hello, {{ user.username }}!</p>

过滤器: 用管道符 | 结合过滤器对变量进行格式化或修改。

<p>Current time: {{ current_time|date:"F j, Y, P" }}</p>

Django 自带许多内置过滤器,如 dateupperlength 等。

标签: 使用 {% %} 包围的标签来实现逻辑操作,控制流或加载模板库。

{% if user.is_authenticated %}
    <p>Welcome back, {{ user.username }}!</p>
{% else %}
    <p>Please log in.</p>
{% endif %}

{% for item in item_list %}
    <li>{{ item.name }}</li>
{% endfor %}

注释: 模板注释不会输出到生成的 HTML,使用 {# #} 注释文本。

{# This is a comment #}

模板继承

Django 支持模板继承,使得代码更易维护和复用。

父模板: 通常定义一个基本布局,使用 {% block %} 标签定义可重写的区域。

<!-- base.html -->
<html>
<head>
    <title>{% block title %}Default Title{% endblock %}</title>
</head>
<body>
    <header>{% block header %}{% endblock %}</header>
    <main>{% block content %}{% endblock %}</main>
    <footer>{% block footer %}Default Footer{% endblock %}</footer>
</body>
</html>

子模板: 继承基础模板,并重写定义的块。

{% extends "base.html" %}

{% block title %}Page Title{% endblock %}

{% block content %}
    <p>This is the page-specific content.</p>
{% endblock %}

包含模板

使用 {% include %} 标签将一个模板文件包含在另一个模板中,适用于重复出现的页面片段。

<div class="sidebar">
    {% include 'sidebar.html' %}
</div>

上下文处理器

安全性

<p>{{ user_input|safe }}</p>

渲染过程

视图加载模板: 在视图函数或类视图中,使用 render 方法加载和渲染模板。

from django.shortcuts import render

def my_view(request):
    return render(request, 'my_template.html', {'key': 'value'})

返回 HttpResponse: 渲染过程生成 HTML,并以 HttpResponse 形式返回给客户端。

总结

Django 的模板系统通过直观的语法和强大的功能分离了表现层和业务逻辑,使得开发过程更简洁和易维护。无论是简单的静态展示还是复杂的动态页面,Django 的模板都提供了足够的灵活性和安全性来应对各种需求。通过模板继承、过滤器和标签,开发者可以高效地构建精美的用户界面并确保代码的可重用性。

到此这篇关于django template 模板渲染的实现的文章就介绍到这了,更多相关django template 模板渲染内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文