在Python的Django框架中创建和使用模版

 更新时间:2015年07月15日 11:51:11   投稿:goldensun  
这篇文章主要介绍了在Python的Django框架中创建和使用模版的方法,包括使用manage.py shell来帮助设置模版的方法,需要的朋友可以参考下

如何使用模板系统

让我们深入研究模板系统,你将会明白它是如何工作的。但我们暂不打算将它与先前创建的视图结合在一起,因为我们现在的目的是了解它是如何独立工作的。 。 (换言之, 通常你会将模板和视图一起使用,但是我们只是想突出模板系统是一个Python库,你可以在任何地方使用它,而不仅仅是在Django视图中。)

在Python代码中使用Django模板的最基本方式如下:

  •     可以用原始的模板代码字符串创建一个 Template 对象, Django同样支持用指定模板文件路径的方式来创建 Template 对象;
  •     调用模板对象的render方法,并且传入一套变量context。它将返回一个基于模板的展现字符串,模板中的变量和标签会被context值替换。

代码如下:

>>> from django import template
>>> t = template.Template('My name is {{ name }}.')
>>> c = template.Context({'name': 'Adrian'})
>>> print t.render(c)
My name is Adrian.
>>> c = template.Context({'name': 'Fred'})
>>> print t.render(c)
My name is Fred.

以下部分逐步的详细介绍
创建模板对象

创建一个 Template 对象最简单的方法就是直接实例化它。 Template 类就在 django.template 模块中,构造函数接受一个参数,原始模板代码。 让我们深入挖掘一下 Python的解释器看看它是怎么工作的。

转到project目录(在第二章由 django-admin.py startproject 命令创建), 输入命令 python manage.py shell 启动交互界面。

一个特殊的Python提示符

如果你曾经使用过Python,你一定好奇,为什么我们运行python manage.py shell而不是python。这两个命令都会启动交互解释器,但是manage.py shell命令有一个重要的不同: 在启动解释器之前,它告诉Django使用哪个设置文件。 Django框架的大部分子系统,包括模板系统,都依赖于配置文件;如果Django不知道使用哪个配置文件,这些系统将不能工作。

如果你想知道,这里将向你解释它背后是如何工作的。 Django搜索DJANGO_SETTINGS_MODULE环境变量,它被设置在settings.py中。例如,假设mysite在你的Python搜索路径中,那么DJANGO_SETTINGS_MODULE应该被设置为:'mysite.settings'。

当你运行命令:python manage.py shell,它将自动帮你处理DJANGO_SETTINGS_MODULE。 在当前的这些示例中,我们鼓励你使用`` python manage.py shell``这个方法,这样可以免去你大费周章地去配置那些你不熟悉的环境变量。

随着你越来越熟悉Django,你可能会偏向于废弃使用`` manage.py shell`` ,而是在你的配置文件.bash_profile中手动添加 DJANGO_SETTINGS_MODULE这个环境变量。

让我们来了解一些模板系统的基本知识:

>>> from django.template import Template
>>> t = Template('My name is {{ name }}.')
>>> print t

如果你跟我们一起做,你将会看到下面的内容:

<django.template.Template object at 0xb7d5f24c>

0xb7d5f24c 每次都会不一样,这没什么关系;这只是Python运行时 Template 对象的ID。

当你创建一个 Template 对象,模板系统在内部编译这个模板到内部格式,并做优化,做好 渲染的准备。 如果你的模板语法有错误,那么在调用 Template() 时就会抛出 TemplateSyntaxError 异常:

>>> from django.template import Template
>>> t = Template('{% notatag %}')
Traceback (most recent call last):
 File "<stdin>", line 1, in ?
 ...
django.template.TemplateSyntaxError: Invalid block tag: 'notatag'

这里,块标签(block tag)指向的是`` {% notatag %}``,块标签与模板标签是同义的。

系统会在下面的情形抛出 TemplateSyntaxError 异常:

  •     无效的tags
  •     标签的参数无效
  •     无效的过滤器
  •     过滤器的参数无效
  •     无效的模板语法
  •     未封闭的块标签 (针对需要封闭的块标签)


相关文章

  • Python模块Typing.overload的使用场景分析

    Python模块Typing.overload的使用场景分析

    在 Python 中,typing.overload 是一个用于定义函数重载的装饰器,函数重载是指在一个类中可以定义多个相同名字但参数不同的函数,使得在调用函数时可以根据参数的不同选择不同的函数执行,这篇文章主要介绍了Python模块Typing.overload的使用,需要的朋友可以参考下
    2024-02-02
  • Python实现的个人所得税计算器示例

    Python实现的个人所得税计算器示例

    这篇文章主要介绍了Python实现的个人所得税计算器,涉及Python条件判断与数值运算相关操作技巧,需要的朋友可以参考下
    2018-06-06
  • 卸载所有通过pip安装的Python包的方法总结(Windows系统)

    卸载所有通过pip安装的Python包的方法总结(Windows系统)

    这篇文章主要介绍了卸载所有通过pip安装的Python包的方法总结(Windows系统),文中通过代码示例和图文讲解的非常详细,并具有一定的参考价值,需要的朋友可以参考下
    2024-08-08
  • Python实现从线程获取返回值

    Python实现从线程获取返回值

    本文介绍了Python中线程的概念、创建线程的方法和在线程中获取函数返回值的技巧,线程作为进程中的执行单元,可以实现程序的并发运行,文章通过示例代码展示了如何在Python中使用Thread类创建线程,并讲解了在线程中传递参数和获取返回值的方法
    2024-09-09
  • 解决django 向mysql中写入中文字符出错的问题

    解决django 向mysql中写入中文字符出错的问题

    这篇文章主要介绍了解决django 向mysql中写入中文字符出错的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • 使用Python实现VPN搭建的流程步骤

    使用Python实现VPN搭建的流程步骤

    VPN(虚拟私人网络)是一种有效的解决方案,可以帮助我们在网络上匿名浏览,保护数据传输的安全性,虽然市面上有许多商业VPN服务,但你也可以通过Python自己搭建一个简单的VPN,本文将介绍如何用Python建立自己的VPN,需要的朋友可以参考下
    2024-06-06
  • Python 时间操作datetime详情(下)

    Python 时间操作datetime详情(下)

    我们在上一文datetime模块对datetime模块中包含了六个类对象如date、time、datetime等对时间和日期进行操作。这一篇文章我们继续上一篇文章的内容学习datetime模块中六大类的相关方法和属性
    2021-11-11
  • Python中property属性的用处详解

    Python中property属性的用处详解

    这篇文章主要给大家介绍了关于Python中property属性的相关资料,需简单地说就是一个类里面的方法一旦被@property装饰,就可以像调用属性一样地去调用这个方法,它能够简化调用者获取数据的流程,而且不用担心将属性暴露出来,有人对其进行赋值操作,下面要的朋友可以参考下
    2022-04-04
  • Python编程使用matplotlib挑钻石seaborn画图入门教程

    Python编程使用matplotlib挑钻石seaborn画图入门教程

    这篇文章主要为大家介绍了Python编程中使用matplotlib绘图包来挑出完美的钻石,本篇是seaborn包画图使用入门篇,有需要的朋友可以借鉴参考下
    2021-10-10
  • Python 自动备份脚本的示例代码

    Python 自动备份脚本的示例代码

    这篇文章主要介绍了Python 自动备份脚本,本文结合代码给大家讲解的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-12-12

最新评论