2017-02-04 2 views
0

今、私は2つのアプリを同じプロジェクトで実行しています。フロントエンドの場合、Angularを使用していますので、理想的には、これらをまとめて1か所にまとめたいと考えています。Djangoプロジェクトで複数のアプリケーションのテンプレートと静的ファイルを管理する方法は?

しかし、Djangoのテンプレートと静的ファイルの処理方法は、これらがアプリケーションのフォルダ内に配置されていることです。

これらを1か所にまとめるにはどうすればよいでしょうか?フロントエンド用のフレームワークを使用しているので、テンプレートと静的フォルダをそれぞれのアプリケーションのフォルダ内に配置する必要はありません。例えば

  • myapp1 /テンプレート/:私は、次のいずれかでbase.htmlファイルを置く場合、これは動作します

    url(r'^$', TemplateView.as_view(template_name='base.html')), 
    

    urls.pyでこれを持っています

  • myapp2 /テンプレート/

だから、共同は何ですかこのようなことをネイション的に正しい方法ですか?

+0

をラムpython manage.py collectstatic

を持っていることを確認するには、あなたがテンプレートや静的ファイルについて質問するかどうかを選択します。彼らは異なって扱われます。 –

答えて

1

Djangoの静的な設定

あなたは

project/static/app1/css/style.css 
project/static/app2/css/style.css 

の例のように、あなたのニーズに合わせて、静的なフォルダにsettings.py

import os 
def root(folder): 
    return os.path.join(os.path.abspath(os.path.dirname(__file__)), '..',folder) 

STATIC_ROOT = root('staticstorage') 
STATIC_URL = '/static/' 
# Additional locations of static files 
STATICFILES_DIRS = (
    root('static'), 
) 
をすべてあなたの静的な関連ファイルを入れて、静的な設定でこの問題を解決することができます

urls.py

from django.conf.urls.static import static 
from django.conf import settings 
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) 

あなたのテンプレートフォルダに

base.html

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <script src="/static/app1/js/jquery-1.10.1.min.js"></script> 
    </head> 
    <body> 

    </body> 
</html> 

base2.html 

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <script src="/static/app2/js/jquery-1.10.1.min.js"></script> 
    </head>2 
    <body> 

    </body> 
</html> 


{% extends 'base1.html'%} 
<h1>Hello world app1 </h1 


{% extends 'base2.html'%} 
<h1>Hello world app2 </h1> 
+0

「ルート」をどこから取得しているのか教えていただけますか?私はあなたのコードを実行した、それは 'ルート'が見つかりません。それはPythonモジュールですか? –

+0

ああ申し訳ありませんが、ベースディレクトリの作成のための私の独自の機能は、私はそれを確認してください答えを更新します – Cadmus

関連する問題