2011-09-07 164 views
2

我正在構建一個web應用程序,它將成爲現有靜態網站的一部分。我寧願使用當前網站的靜態.inc包含文件的頁眉和頁腳。Django:包含外部包含文件

有沒有一種辦法,包括這些文件是這樣的:

{%包括 'http://www.mysote.com/inc/footer.inc' %}

+1

我想你想讓服務器檢索文件,而不是客戶端。無論哪種方式,下載文件可能需要一段時間,如果該服務器關閉,則會出現更多問題。我建議你下載這個文件,把它放在模板目錄中,然後定期包含它。 – Umang

回答

2

不存在內置的方式可以在Django中執行此操作,但這將是一個非常簡單的模板標籤,可以自行編寫(有人已經寫了這樣一個很好的機會,儘管快速搜索沒有爲我提供這方面的幫助) 。如果你想走這條路,你可以用simple_tag(這裏記錄:https://docs.djangoproject.com/en/1.3/howto/custom-template-tags/#shortcut-for-simple-tags)。這或許可以像類似簡單:

def include_external(url): 
    import urllib2 
    return urllib2.urlopen(url).read() 

register.simple_tag(include_external) 


{% include_external 'http://....' %} 

然而,隨着Umang提到的,那就是潛在的問題 - 取包括文件可能會顯著增加你的頁面加載時間,你會保證故障在你的靜態網站也會讓你的Django應用程序。如果發現其中任何一件事情都是值得關注的,那麼您可以查看緩存標題 - 但是,這會增加額外的複雜性,並且您可能更好地在每次更新時複製頭文件。

+0

這工作完美! 它也適用於[美麗的湯](http://www.crummy.com/software/BeautifulSoup/)。 該頁面滯後一點,所以我已經選擇每次更新時將文件複製到應用程序中。 謝謝 S – sidarcy

+1

這是一個很好的解決方案。我唯一的改變是推薦使用偉大的[請求](http://docs.python-requests.org/en/latest/)庫來代替過時的'urllib2'庫。 – tatlar