2011-09-07 15 views
2

既存の静的なWebサイトの一部となるWebアプリケーションをビルドします。私は静的な.incインクルードファイルである現在のサイトからヘッダとフッタを使いたいと思う。Django:外部インクルードファイルを含む

これらのファイルを含める方法のようなものがあります:

{%が 'http://www.mysote.com/inc/footer.inc' %を含ん}

+1

私は、サーバーがクライアントではなくファイルを取得したいと思っています。いずれにしても、ファイルをダウンロードするのに時間がかかることがあり、そのサーバーがダウンしている場合は、より多くの問題があります。私はあなたがファイルをダウンロードし、それをテンプレートディレクトリに入れてから定期的にインクルードすることをお勧めします。 – Umang

答えて

2

ありませんDjangoでこれを行うための組み込みの方法ですが、それはあなた自身で書くための本当に簡単なテンプレートタグになります(クイック検索では私のためにそれを立てられませんでしたが、 。そのルートに行きたい場合は、すぐにsimple_taghttps://docs.djangoproject.com/en/1.3/howto/custom-template-tags/#shortcut-for-simple-tagsに記載されています)でそれを行うことができます。 Umangが述べたように、しかし、

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

register.simple_tag(include_external) 


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

それは潜在的に問題がある - ファイルを含めるフェッチはおそらく大幅にあなたのページの読み込み時間が長くなり、あなたはその失敗を保証します:それはおそらくのようなもののような単純なものでしたあなたの静的なサイトでも同様にあなたのDjangoのアプリケーションをダウンされます。これらの事のいずれかが気になる場合は、ヘッダーのキャッシュを見ることができますが、それは複雑さが増し、ヘッダーファイルを更新するたびにコピーするほうがよいでしょう。

+0

これは完璧に動作します! [美味しいスープ](http://www.crummy.com/software/BeautifulSoup/)でもうまくいきます。 ページが少し遅れていたので、更新するたびにファイルをアプリにコピーするオプションを選択しました。 ありがとう S – sidarcy

+1

これは良い解決策です。私の唯一の変更は、古い 'urllib2'ライブラリの代わりにすばらしい[Requests](http://docs.python-requests.org/en/latest/)ライブラリを使用することをお勧めします。 – tatlar