Django Template中使用含有类实例对象的字典时要注意的事项[初学者问题]
时间:2011-10-13
来源:互联网
下面小弟来说下今天学Django模板时遇到的问题和解决的方法
在python idle里,我写入如下代码Python code
这是一个测试类的定义,很简单的一个类
然后我实例化了两次Python code
现在要测试的类和对象有了,我开始加入模板内容如下Python code
上面这个测试模板返回的内容如下Python code
之后我想测试下如果直接传进去对象的成员变量,代码如下Python code
上面的这个测试模板也返回
Python code
上面的测试简单顺利,麻痹了我的神经,我就把类对象通过字典传到模板,现在开始要看到真正的问题了,测试的模板文件内容如下HTML code
不知道大家一眼看出来我犯的错误没有?
就是字典的成员函数in在调用时默认返回的是keys()的列表
这个Python code
要用values返回的列表才是真正的类实例
修改关键代码如下Python code
这样在源文件中传到模板里的类实例就可以被正常访问了
此错误比较低级,发此贴给大家提个醒
以后编码时要认真
在python idle里,我写入如下代码Python code
class Test: id = 0 name ='' passwd = '' def __init__(self, id, name, passwd): self.id = id self.name = name self.passwd = passwd
这是一个测试类的定义,很简单的一个类
然后我实例化了两次Python code
test1 = Test(0, 'kevin', '123') test2 = Test(1, 'cong', '234')
现在要测试的类和对象有了,我开始加入模板内容如下Python code
t = Template('this is a Test, test that {{id}}') c = Context({"id":test1.id,}) print t.render(c)
上面这个测试模板返回的内容如下Python code
this is a Test, test that 0
之后我想测试下如果直接传进去对象的成员变量,代码如下Python code
t = Template('this is a Test, test that {{id.id}}') c = Context({"id":test1,}) print t.render(c)
上面的这个测试模板也返回
Python code
this is a Test, test that 0
上面的测试简单顺利,麻痹了我的神经,我就把类对象通过字典传到模板,现在开始要看到真正的问题了,测试的模板文件内容如下HTML code
<html> <head> <title> </title> </head> <body> <table > <tr> <td> {%for i in RecordInfo%} {{i.id}}<br>------------------------ {%endfor%} </td> </tr> </table> </body> </html>
不知道大家一眼看出来我犯的错误没有?
就是字典的成员函数in在调用时默认返回的是keys()的列表
这个Python code
{{i.id}}
是无效的要用values返回的列表才是真正的类实例
修改关键代码如下Python code
{%for i in RecordInfo.values%} {{i.id}}<br>------------------------ {%endfor%}
这样在源文件中传到模板里的类实例就可以被正常访问了
此错误比较低级,发此贴给大家提个醒
以后编码时要认真
作者: kevin_zcwen 发布时间: 2011-10-13
另外补充一点,在settings.py中配置Database_Engine时注释里写的是ADD Not Replace
作者: kevin_zcwen 发布时间: 2011-10-14
这个django或者template没有任何关系。Python里的for k in {...}本来就是key。
作者: iambic 发布时间: 2011-10-14
引用 2 楼 iambic 的回复:
这个django或者template没有任何关系。Python里的for k in {...}本来就是key。
这个django或者template没有任何关系。Python里的for k in {...}本来就是key。
首先你说的是对的,我原来看字典的时候没看那么细,没有意思到这点
当时只关注用key来调用value了
其次是提醒 大家不要犯错
感谢你的回答
作者: kevin_zcwen 发布时间: 2011-10-14
再有就是当时做的例子是调用for i in dic.keys()
所以就没想到for i in dic中i也是key
看书还是少呀,不够
所以就没想到for i in dic中i也是key
看书还是少呀,不够
作者: kevin_zcwen 发布时间: 2011-10-14
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28