详解在Python的Django框架中创建模板库的方法

作者:goldensun 时间:2023-08-15 10:32:56 

不管是写自定义标签还是过滤器,第一件要做的事是创建模板库(Django能够导入的基本结构)。

创建一个模板库分两步走:

    第一,决定模板库应该放在哪个Django应用下。 如果你通过 manage.py startapp 创建了一个应用,你可以把它放在那里,或者你可以为模板库单独创建一个应用。 我们更推荐使用后者,因为你的filter可能在后来的工程中有用。

    无论你采用何种方式,请确保把你的应用添加到 INSTALLED_APPS 中。 我们稍后会解释这一点。

    第二,在适当的Django应用包里创建一个 templatetags 目录。 这个目录应当和 models.py 、 views.py 等处于同一层次。 例如:


books/
 __init__.py
 models.py
 templatetags/
 views.py

    在 templatetags 中创建两个空文件: 一个 __init__.py (告诉Python这是 一个包含了Python代码的包)和一个用来存放你自定义的标签/过滤器定义的文件。 第二个文件的名字稍后将用来加载标签。 例如,如果你的自定义标签/过滤器在一个叫作 poll_extras.py 的文件中,你需要在模板中写入如下内容:


{% load poll_extras %}

    {% load %} 标签检查 INSTALLED_APPS 中的设置,仅允许加载已安装的Django应用程序中的模板库。 这是一个安全特性;它可以让你在一台电脑上部署很多的模板库的代码,而又不用把它们暴露给每一个Django安装。

如果你写了一个不和任何特定模型/视图关联的模板库,那么得到一个仅包含 templatetags 包的Django应用程序包是完全正常的。 对于在 templatetags 包中放置多少个模块没有做任何的限制。 需要了解的是:{%load%}语句是通过指定的Python模块名而不是应用名来加载标签/过滤器的。

一旦创建了Python模块,你只需根据是要编写过滤器还是标签来相应的编写一些Python代码。

作为合法的标签库,模块需要包含一个名为register的模块级变量。这个变量是template.Library的实例,是所有注册标签和过滤器的数据结构。 所以,请在你的模块的顶部插入如下语句:


from django import template

register = template.Library()

注意

请阅读Django默认的过滤器和标签的源码,那里有大量的例子。 他们分别为: django/template/defaultfilters.py 和 django/template/defaulttags.py 。django.contrib中的某些应用程序也包含模板库。

创建 register 变量后,你就可以使用它来创建模板的过滤器和标签了。

标签:Django,模板库
0
投稿

猜你喜欢

  • Mysql 原生语句中save or update 的写法汇总

    2024-01-13 15:08:52
  • Symfony2框架学习笔记之HTTP Cache用法详解

    2024-03-26 23:39:12
  • Django REST framework视图的用法

    2021-02-10 02:51:49
  • Go语言多值替换的HTML模板实例分析

    2024-05-02 16:25:02
  • vue-cli4如何打包静态资源到指定目录

    2024-05-22 10:43:24
  • 将imagenet2012数据为tensorflow的tfrecords格式并跑验证的详细过程

    2024-01-01 12:04:35
  • Python使用cx_Oracle调用Oracle存储过程的方法示例

    2021-01-26 19:37:28
  • js+html制作简单验证码

    2024-04-19 10:44:33
  • python 基于opencv操作摄像头

    2023-03-06 08:02:31
  • 巧用CSS滤镜做图案文字

    2011-04-29 14:06:00
  • 解决Navicat无法连接 VMware中Centos系统中的 MySQL服务器的问题

    2024-01-16 03:12:17
  • MySQL数据库的授权原则

    2008-12-29 13:39:00
  • vscode通过Remote SSH远程连接及离线配置的方法

    2022-01-09 00:31:08
  • Go语言 如何实现RSA加密解密

    2024-05-22 17:50:01
  • javascript代码实现简易计算器

    2024-04-16 08:57:46
  • Python开源自动化工具Playwright安装及介绍使用

    2023-08-20 13:17:43
  • 利用Matlab绘制各类特殊图形的实例代码

    2021-01-05 21:10:31
  • CSS如何做细线表格

    2009-01-09 13:12:00
  • go中import包的大坑解决方案

    2024-05-09 09:55:14
  • Python的一些用法分享

    2021-04-19 20:49:22
  • asp之家 网络编程 m.aspxhome.com