2017-04-25 61 views
1

我的问题更多的是礼仪主题,而不是其他任何东西。我正在开发一个相对较小的应用程序,它读取XML数据并写入Oracle数据库并输出到网页。Django在单独的文件中的html模板

我在阅读“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() 

回答

3

两件事情,马上跳到记住关于Django模板,是

  1. 模板继承
    你可以有你的模板继承它们之间相似的行为,一些你不能正常做。

  2. 呈现视图数据的模板
    在你的代码是将数据传递到您的html字符串,在运行时。 您可以通过使用django's template language来避免这种情况,其逻辑操作如if,elseif和循环操作如for。您还可以高效且简单的方式在您的html模板和您的django视图之间传递数据,这使得您的模板更“动态”。

具有的上述两种情况下,一个简单的例子来看看herehere(也可以参考whole article)。

3

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

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

  2. 保持视图和控制器分离(和模型,太,虽然你不问的事情)经常导致代码更容易自动化测试工具,如测试 Python的内置unittest库。 Django利用这个库进行自己的测试。这部分是由于较低的coupling以及可能较高的cohesion造成的。