我的问题更多的是一个礼仪主题,而不是别的。我正在开发一个相对较小的应用程序,它可以读取XML数据并写入Oracle数据库,然后输出到网页。你知道吗
我正在阅读《Django的权威指南:正确的Web开发》这本书,主要是因为学习一些新的东西很有趣,我认识到越来越多的对具有Django经验的工程师的要求。你知道吗
在这本书中,有一个建议是将html模板与代码的其余部分分开(例如在自己的文件夹中的.html文件中)。你知道吗
这样做相对于只在python脚本中嵌入html模板有什么好处吗?你知道吗
我使用的模板大约有15行,使用生成列表中的数据填充html文本:
path_to_be_used = desktop_path + 'XURA_output.html'
f = open(path_to_be_used, 'w')
string = """<html>
<head><title>XURA Messaging</title></head>
<body>
<p>XURA Message contents: the data contained in this page is the Push Notification output retrieved from the XURA server.<br>
Upon arrival this data is subsequently written to the Oracle database.
"""
f.write(string)
line1 = "<p><pre>TAG".ljust(28) + "| " + "TEXT".ljust(40) + " </pre>"
f.write(line1)
for tag in smsreport_list:
tagInfo = tag[0]
textInfo = tag[1]
loop_line = "<pre>" + tagInfo.ljust(20) + "| " + textInfo.ljust(40) + " </pre>"
f.write(loop_line)
line2 = """</p></body>
</html>"""
f.write(line2)
f.close()
django模板的两个特点是
模板继承
您可以让模板在它们之间继承类似的行为,这是您通常无法做到的。
在模板上渲染视图数据
在代码中,在运行时将数据传递给
html
字符串。 您可以通过使用django's template language来避免这种情况,它具有if
、elseif
之类的逻辑操作和for
之类的循环操作。您还可以以高效简单的方式在html模板和django视图之间传递数据,这使模板更加“动态”。请看here和here这两种情况的简单示例(也请阅读whole article)。你知道吗
约翰的回答给出了两个很好的理由。这里还有两个:
将模板与控制器代码分离可以简化两者。处理控制器函数不需要知道HTML;处理模板不需要知道Python。您的编辑器或IDE也更有可能用单独的文件提供语法高亮显示、补全等。
将视图和控制器分开(还有模型,尽管你没有问这个问题)通常会导致代码更容易用自动化测试工具测试,比如Python的内置
unittest
库。Django利用这个库进行自己的测试。这部分是由较低的coupling和可能较高的cohesion造成的。相关问题 更多 >
编程相关推荐