国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Django框架下在視圖中使用模版的方法

2020-01-04 18:03:47
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了Django框架下在視圖中使用模版的方法,Django是Python豐富多彩的眾框架中最有人氣的一個,需要的朋友可以參考下

打開current_datetime 視圖。 以下是其內容:

 

 
  1. from django.http import HttpResponse 
  2. import datetime 
  3.  
  4. def current_datetime(request): 
  5. now = datetime.datetime.now() 
  6. html = "<html><body>It is now %s.</body></html>" % now 
  7. return HttpResponse(html) 

讓我們用 Django 模板系統來修改該視圖。 第一步,你可能已經想到了要做下面這樣的修改:

 

 
  1. from django.template import Template, Context 
  2. from django.http import HttpResponse 
  3. import datetime 
  4.  
  5. def current_datetime(request): 
  6. now = datetime.datetime.now() 
  7. t = Template("<html><body>It is now {{ current_date }}.</body></html>"
  8. html = t.render(Context({'current_date': now})) 
  9. return HttpResponse(html) 

沒錯,它確實使用了模板系統,但是并沒有解決我們在本章開頭所指出的問題。 也就是說,模板仍然嵌入在Python代碼里,并未真正的實現數據與表現的分離。 讓我們將模板置于一個 單獨的文件 中,并且讓視圖加載該文件來解決此問題。

你可能首先考慮把模板保存在文件系統的某個位置并用 Python 內建的文件操作函數來讀取文件內容。 假設文件保存在 /home/djangouser/templates/mytemplate.html 中的話,代碼就會像下面這樣:

 

 
  1. from django.template import Template, Context 
  2. from django.http import HttpResponse 
  3. import datetime 
  4.  
  5. def current_datetime(request): 
  6. now = datetime.datetime.now() 
  7. # Simple way of using templates from the filesystem. 
  8. # This is BAD because it doesn't account for missing files! 
  9. fp = open('/home/djangouser/templates/mytemplate.html'
  10. t = Template(fp.read()) 
  11. fp.close() 
  12. html = t.render(Context({'current_date': now})) 
  13. return HttpResponse(html) 

然而,基于以下幾個原因,該方法還算不上簡潔:

它沒有對文件丟失的情況做出處理。 如果文件 mytemplate.html 不存在或者不可讀, open() 函數調用將會引發 IOError 異常。

這里對模板文件的位置進行了硬編碼。 如果你在每個視圖函數都用該技術,就要不斷復制這些模板的位置。 更不用說還要帶來大量的輸入工作!

它包含了大量令人生厭的重復代碼。 與其在每次加載模板時都調用 open() 、 fp.read() 和 fp.close() ,還不如做出更佳選擇。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 广汉市| 交口县| 竹山县| 彩票| 木兰县| 咸宁市| 沈丘县| 海城市| 南岸区| 六枝特区| 自治县| 永和县| 石河子市| 穆棱市| 鄂尔多斯市| 扬中市| 黑河市| 蓬溪县| 鄂托克前旗| 威远县| 乌苏市| 荆州市| 新田县| 神木县| 兴隆县| 恩平市| 古丈县| 临清市| 新乐市| 芜湖市| 衡阳县| 大田县| 安庆市| 南皮县| 枣阳市| 德钦县| 台中市| 偃师市| 定兴县| 四平市| 万全县|