最近研究openstack出现了一些问题,需要自己来解决,openstack的是使用python来实现的,他的dashboard就是一个django的project。所以重新拾起django看了一下,发现有些东西已经遗忘掉了,重新看了一下,并记录,以防再次遗忘。
django模板把指令放在{% %}中,{{}}中的是在python代码中的变量。
extends 与 include分别是模板的继承和包含关系。
- {% include "horizon/common/_page_header.html" %}
{% include "horizon/common/_page_header.html" %}
horizon/common/_page_header.html文件如下:
- {% load i18n %}
- {% block page_header %}
- <div class='page-header'>
- <h2>{{ title }}</h2>
- </div>
- {% endblock %}
{% load i18n %} {% block page_header %} <div class='page-header'> <h2>{{ title }}</h2> </div> {% endblock %}
其中block是表示重用的块。
父模板中定义:
- {% block context %}
- 父
- {% endblock %}
{% block context %} 父 {% endblock %}
子模板中使用:
- {% extends 'index.html' %}
- {% block context %}
- 实现
- {% endblock %}
{% extends 'index.html' %} {% block context %} 实现 {% endblock %}
load用来载入一个过滤器或者tag。
- {% load truncate_filter %}
- {% load branding %}
{% load truncate_filter %} {% load branding %}
其中templatetags/truncate_filter.py的实现为:
- from django import template
- register = template.Library()
- @register.filter("truncate")
- def truncate(value, size):
- if len(value) > size and size > 3:
- return value[0:(size - 3)] + '...'
- else:
- return value[0:size]
from django import template register = template.Library() @register.filter("truncate") def truncate(value, size): if len(value) > size and size > 3: return value[0:(size - 3)] + '...' else: return value[0:size]
其中templatetags/branding.py的实现为:
- from django import template
- from django.conf import settings
- from django.utils.translation import ugettext as _
- register = template.Library()
- class SiteBrandingNode(template.Node):
- def render(self, context):
- return getattr(settings, "SITE_BRANDING", _("Horizon"))
- @register.tag
- def site_branding(parser, token):
- return SiteBrandingNode()
- ...
from django import template from django.conf import settings from django.utils.translation import ugettext as _ register = template.Library() class SiteBrandingNode(template.Node): def render(self, context): return getattr(settings, "SITE_BRANDING", _("Horizon")) @register.tag def site_branding(parser, token): return SiteBrandingNode() ...
自定义有两种方式一种是通过register,一种是使用装饰器。
另一中方式为:
- register.tag('name', fun)
register.tag('name', fun)
相关推荐
django项目及环境搭建好后,创建模板文件。
项目标题:高效 Django 模板引擎开发源码集合 技术栈:主要采用 Python 语言进行开发。 包含文件类型:共计 36 个文件,其中包括: - Python 源代码文件(.py):31 个 - 文本文件(.txt):2 个 - Git 忽略配置(....
一个Django模板,用于使用Flask作为前端,Django作为后端
Django入门基础教程:django模板 Django入门基础教程:django模板
Django_layui后台模板
django-email-from-template:发送完全由Django模板生成的电子邮件
django-classy-tags, 基于类的Django 模板标记 django-classy-tags请参考文档/目录中的文档以获得帮助。 有关HTML呈现版本的信息,请参见这里的 。 这里项目这个项目的目标是创建一种新的编写 Django 模板标签的方法...
Django模板-带引导 重命名您的项目 添加模型后未测试! 确保在项目早期进行 python rename.py oldName newName 如果您没有安装烧瓶,请运行 pip3 install django or pip install django 启动服务器 python manage.py...
我的个人(非常)自以为是的Django模板盒子里有什么基于Django REST Framework且具有JWT支持的纯API的django(用俄语检查) 用于API模式生成具有独立开发时间依赖项的 Starter Circle CI配置pytest包含有用的东西,...
djula, Django 模板语言的通用Lisp端口 Djula Djula是 python Django 模板引擎的端口。下面是一个模板的小示例: {% extends "base.html" %} {% block title %}Memberlist
本文实例讲述了Python Django模板之模板过滤器与自定义模板过滤器。分享给大家供大家参考,具体如下: 模板过滤器 过滤器用于对模板变量进行操作。 date:改变日期的显示格式。 length:求长度。字符串,列表。 ...
HamlPy, 像模板一样的HAML变换器在 Django 模板中的应用 HamlPy对于希望使用像syntax语法的的开发者来说,HamlPy ( 发音"Haml是一种工具。 HamlPy本身不是模板引擎,只是一个编译器,它将HamlPy文件转换成 Django ...
打算做网站左边栏的二级链接,通过从数据库外联键(ForeignKey)获取子节点,再使用Django模板{% for <个体> in <父节点>.<个体所在表名>_set.all %}产生第二季链接。 但该模板还存在渲染错误,会出现子节点渲染后的父...
第19周-第06章节-Python3.5-Django模板语言循环字典.avi
本文主要给大家介绍了关于Django模板无法使用perms变量的解决方法,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。 解决方法: 首先,在使用Django内置权限管理系统时,settings.py文件要添加 ...
因为工作的需要,最近一直在思考如何更好的组织Django中的静态资源,比如JS、CSS一类,如何结合前端构建工具写出更好的代码以及结构呢?下面这篇文章就给大家详细介绍了实现的方法,话不多说,来一起看看详细的介绍...
通过本节可以学到: 1. 向模板中传递数据 2. 不同python数据类型填充模板 3. 模板中使用判断语句 4. 模板中使用循环语句
一套精美的博客模板 ,适用于各种后台,如果要是用django开发,可以参考追梦任务的博客:https://www.zmrenwu.com/post/2/
模板引擎:Django的模板引擎提供了一种简单而强大的方式来生成动态的HTML页面。它支持模板继承、变量替换、条件判断等常用功能,使开发人员能够更好地组织和呈现数据。 表单处理:Django提供了方便的表单处理功能,...