Django html模板在单独的fi中

2024-10-01 00:17:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我的问题更多的是一个礼仪主题,而不是别的。我正在开发一个相对较小的应用程序,它可以读取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()

Tags: theto数据pathdjango模板htmltag
2条回答

django模板的两个特点是

  1. 模板继承
    您可以让模板在它们之间继承类似的行为,这是您通常无法做到的。

  2. 在模板上渲染视图数据
    在代码中,在运行时将数据传递给html字符串。 您可以通过使用django's template language来避免这种情况,它具有ifelseif之类的逻辑操作和for之类的循环操作。您还可以以高效简单的方式在html模板和django视图之间传递数据,这使模板更加“动态”。

请看herehere这两种情况的简单示例(也请阅读whole article)。你知道吗

约翰的回答给出了两个很好的理由。这里还有两个:

  1. 将模板与控制器代码分离可以简化两者。处理控制器函数不需要知道HTML;处理模板不需要知道Python。您的编辑器或IDE也更有可能用单独的文件提供语法高亮显示、补全等。

  2. 将视图和控制器分开(还有模型,尽管你没有问这个问题)通常会导致代码更容易用自动化测试工具测试,比如Python的内置unittest库。Django利用这个库进行自己的测试。这部分是由较低的coupling和可能较高的cohesion造成的。

相关问题 更多 >