方法调用行为

方法调用比其他类型的查找略为复杂一点。 以下是一些注意事项:

在方法查找过程中,如果某方法抛出一个异常,除非该异常有一个 silent_variable_failure 属性并且值为 True ,否则的话它将被传播。如果异常被传播,模板里的指定变量会被置为空字符串,比如:

>>> t = Template("My name is {{ person.first_name }}.")

>>> class PersonClass3:

... def first_name(self):

... raise AssertionError, "foo"

>>> p = PersonClass3()

>>> t.render(Context({"person": p}))

Traceback (most recent call last):

...

AssertionError: foo

>>> class SilentAssertionError(AssertionError):

... silent_variable_failure = True

>>> class PersonClass4:

... def first_name(self):

... raise SilentAssertionError

>>> p = PersonClass4()

>>> t.render(Context({"person": p}))

u'My name is .'

仅在方法无需传入参数时,其调用才有效。 否则,系统将会转移到下一个查找类型(列表索引查找)。

显然,有些方法是有副作用的,好的情况下允许模板系统访问它们可能只是干件蠢事,坏的情况下甚至会引发安全漏洞。

例如,你的一个 BankAccount 对象有一个 delete() 方法。 如果某个模板中包含了像 {{ account.delete }}这样的标签,其中`` account`` 又是BankAccount 的一个实例,请注意在这个模板载入时,account对象将被删除。

要防止这样的事情发生,必须设置该方法的 alters_data 函数属性:

def delete(self):

# Delete the account

delete.alters_data = True

模板系统不会执行任何以该方式进行标记的方法。 接上面的例子,如果模板文件里包含了 {{ account.delete }} ,对象又具有 delete()方法,而且delete() 有alters_data=True这个属性,那么在模板载入时, delete()方法将不会被执行。 它将静静地错误退出。

如何处理无效变量

默认情况下,如果一个变量不存在,模板系统会把它展示为空字符串,不做任何事情来表示失败。 例如:

>>> from django.template import Template, Context

>>> t = Template('Your name is {{ name }}.')

>>> t.render(Context())

u'Your name is .'

>>> t.render(Context({'var': 'hello'}))

u'Your name is .'

>>> t.render(Context({'NAME': 'hello'}))

u'Your name is .'

>>> t.render(Context({'Name': 'hello'}))

u'Your name is .'

系统静悄悄地表示失败,而不是引发一个异常,因为这通常是人为错误造成的。 这种情况下,因为变量名有错误的状况或名称, 所有的查询都会失败。 现实世界中,对于一个web站点来说,如果仅仅因为一个小的模板语法错误而造成无法访问,这是不可接受的。

python无效语法怎么解决_在Python的Django框架中调用方法和处理无效变量相关推荐

  1. python类型错误如何解决_在Python中 出现的错误类型以及解决办法

    #IndentationError:expected an indented #block 缩进错误 #解决办法 tab 缩进 for index in range(10): if name == ' ...

  2. python manager_详解Python的Django框架中Manager方法的使用

    在语句Book.objects.all()中,objects是一个特殊的属性,需要通过它查询数据库. 在第5章,我们只是简要地说这是模块的manager .现在是时候深入了解managers是什么和如 ...

  3. python 录制网易云登陆_图说Python菜鸟版:第3章 基本语法

    一.前言 本文是作者在录制课程<Python全栈工程师魔鬼训练营>时,花费大量时间和精力整理出来的内容,历时近半年时间.在和学员的上万次互动过程中,发现Python初学者所面临的最大问题就 ...

  4. python做审计底稿视频_最新Python教学视频,每天自学俩小时,让你offer拿到手软...

    2020最新Python零基础到精通资料教材,干货分享,新基础Python教材,看这里,这里有你想要的所有资源哦,最强笔记,教你怎么入门提升!让你对自己更加有信心,重点是资料都是免费的,免费!!! 如 ...

  5. Python的Django框架中forms表单类的使用方法详解2

    用户表单是Web端的一项基本功能,大而全的Django框架中自然带有现成的基础form对象,本文就Python的Django框架中forms表单类的使用方法详解. Form表单的功能 自动生成HTML ...

  6. mysql 中的neq_mysql中neq使用Python的Django框架中的压缩组件Django Compressor_MySQL

    为了加快网站的加载速度,我们通常要多js和css进行压缩处理.这些js和css的压缩工作如果都手动处理,费时费力. <mysql中neq使用Python的Django框架中的压缩组件Django ...

  7. python打印自动换行如何解决_解决python DataFrame 打印结果不换行问题

    解决python DataFrame 打印结果不换行问题 如下所示: 加入代码: pd.set_option('display.width', 5000) 补充知识:Python 实现不换行打印字符的 ...

  8. python中nomodulenamed怎么解决_关于 python ImportError: No module named 的问题

    今天在 centos 下安装 python setup.py install 时报错:ImportError: No module named sysconfig, 当时急着用,就顺手直接源码编译了一 ...

  9. python程序设计简明教程知识点_《Python 简明教程》读书笔记系列一 —— 基本语法...

    基础知识 注释 注释 是 # 符号右侧的任何文本,主要用作程序读者的注释. 在程序中要使用尽可能多的有用注释: 解释假设(或者前提 / 条件) 解释重要的决定 解释重要的细节 解释你想要解决的问题 解 ...

最新文章

  1. 【转】AVAudioPlayer播放音乐,最清晰明了
  2. Bing Maps 开发入门 - 1
  3. 【Docker】Linux安装docker-compose
  4. VirtualCopy()操作I/O口 物理地址为什么要移8位
  5. 济宁医学院计算机科学与技术专业怎么样,济宁医学院专业排名及介绍 哪些专业最好...
  6. 华为机试——整理数字字符串
  7. 直接使用editbox.clear()清空时,有时会无法清除完全,此时有清空文本框的另一种方法...
  8. rtmp之谷歌浏览器默认启用flash
  9. 【渝粤教育】电大中专电商运营实操 (2)作业 题库
  10. ftp 服务器的主动模式和被动模式
  11. (转)全球最权威人脸识别测试PK
  12. 反射认识_03_改变成员变量Fields
  13. pyqt5在图元上画图_PyQt5的PyQtGraph实践系列1:添加图形到PyQt5布局
  14. Chromedrive下载与安装
  15. 国赛培训——最优化智能算法——模拟退火
  16. 基于微信小说平台小程序系统设计与实现 开题报告
  17. dPCA 二面角主成分分析
  18. 一台云服务器ECS如何绑定多个公网IP
  19. 实验记录 | 8/14
  20. PTA 单链表分段逆转 (12 分)

热门文章

  1. php header()的用法
  2. HDU1166 (线段树/修改点,询问区间)
  3. Microsoft Surface--Bing™ Maps WPF Control
  4. blog.mm index.php,每天一个WordPress文件:index.php
  5. awk if 不包含_linux三剑客之awk
  6. 华为畅享20不能升级鸿蒙,华为mate20可以升级鸿蒙os吗-mate20能不能更新鸿蒙系统...
  7. APP移动购物界面设计灵感
  8. 国潮艺术插画设计没有灵感看这里
  9. 鲜花海报,文字与花儿碰上的时候,美妙
  10. 冬季美食不可少烤肉和火锅,最具诱惑的手绘肉食插画素材,让设计师勾引你的味蕾