Django html模板在一个单独的文件中

时间:2017-04-25 10:40:42

标签: python html django

我的问题更多的是礼仪主题而不是其他任何内容。我开发了一个相对较小的应用程序,它读取XML数据并写入Oracle DB并输出到网页。

我正在阅读" Django权威指南:网络开发正确而且#34;本书,主要是因为学习新东西很有趣我认识到对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()

2 个答案:

答案 0 :(得分:3)

关于django模板立即跳出的两件事是

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

  2. 在模板上呈现视图数据
    在您的代码中,您在运行时将数据传递到html字符串。 您可以使用具有ifelseif等逻辑操作的django's template languagefor等循环操作来避免这种情况。您还可以通过高效简单的方式在html模板和django-views之间传递数据,从而使您的模板更具动态性[&34;

  3. 有关上述两种情况的简单示例,请查看herehere。(另请阅读whole article)。

答案 1 :(得分:3)

约翰的回答有两个很好的理由。还有两个:

  1. 从控制器代码中分离模板简化了两者。您无需了解HTML即可使用控制器功能;你不需要知道Python来处理模板。您的编辑器或IDE也更有可能使用单独的文件提供语法突出显示,完成等。

  2. 保持视图和控制器分离(以及模型,尽管你没有提出这个问题)通常会产生更容易测试的代码使用自动化测试工具,如Python内置的在unittest库中。 Django利用这个库进行自己的测试。部分原因是coupling较低,cohesion可能较高。