2016-11-03 11 views
-1

私はオープンソースのDjangoアプリケーションで作業しており、そのためのデザインをいくつか作成しました。今、顧客は著作権で保護された独自のデザインを使用したいと考えています。 Djangoのドキュメントを読んだ後、私は別のプライベートなGITリポジトリを作成しました。これは新しいデザインに使いたいものです。私は設定に2つの項目を追加することで、ほとんど機能しています。 "funder_custom_templates"というフォルダ内のテンプレートを探す余分なエントリと、同じ場所にある静的ファイルを探す余分なエントリ。これは私がテンプレートとSTATICFILES_DIRの構成方法である:予想通り、私はfunder_customer_templates/base.htmlとすべての静的ファイルのために作成するときに私はDjangoプロジェクトの外にテンプレートフォルダを持たせることができます

TEMPLATES = [ 
    { 
     'BACKEND': 'django.template.backends.django.DjangoTemplates', 
     'DIRS': [ 
      os.path.join(PROJECT_DIR, '..', '..', 'funder_custom_templates'), 
      os.path.join(PROJECT_DIR, 'templates'), 
     ], 
     'APP_DIRS': True, 
     'OPTIONS': { 
      'context_processors': [ 
       'django.template.context_processors.debug', 
       'django.template.context_processors.request', 
       'django.contrib.auth.context_processors.auth', 
       'django.contrib.messages.context_processors.messages', 
       'fundraiser.context_processors.cart', 
      ], 
     }, 
    }, 
] 
STATICFILES_DIRS = [ 
    os.path.join(PROJECT_DIR, '..', '..', 'funder_custom_templates','static'), 
    os.path.join(PROJECT_DIR, 'static'), 
] 

これは、PROJECT_DIR /テンプレート/ base.htmlに位置ベースのデザインを上書きするために働きます。しかし、私はまた、ブログ/テンプレート/ブログ/ blog_index_page.htmlのようなアプリケーション固有のテンプレートファイルを無効にしたいと思います。

私はfunder_custom_templatesのルートにこれらのファイルを入れようとしましたが、funder_custom_templatesのアプリケーションフォルダ構造を模倣しようとしましたが、アプリ固有のテンプレートを読み込みます。これを解決する方法はありますか?あなたは('APP_DIRS': True,を設定することにより、指定された)テンプレートをロードするためにapp_directories.Loaderクラスを使用しているので、その後、アプリspecficテンプレート用DjangoはあなたのINSTALLED_APPS設定を反復しますhttps://github.com/acidjunk/funder/tree/develop/

+1

たぶん、あなたはfunder_custom_templates' 'のルートに' blog_index_page.html'を入れて、それの 'blog'サブディレクトリに、しかし、私はべきではありません私は確信していません。 –

+0

'funder_custom_templates'にテンプレートのレイアウトを表示してください。 – Alasdair

+0

私はレイアウトのものをテストしました。メインのデザインからbase.htmlを使っていくつかのテキストを追加しましたので、正しい "カスタム"テンプレートがロードされていることがわかりました。 – acidjunk

答えて

1

:にあるフォルダ構造、と

例のプロジェクトファイル、特定のテンプレートファイルを探します。ここで重要なことは、順番にそうすることです。

blog/templates/blog/blog_index_page.htmlを無効にする場合は、blogより前にアプリケーション内にcustom_blog/templates/blog/blog_index_page.htmlが必要です。

独自のdjangoアプリケーションとpythonパッケージにすべてのカスタム静的リソースをラップすることをお勧めします。こうすることで、プライベートレポからパッケージをインストールして、インストールされているアプリのリストに追加して、静的コンテンツやテンプレートを上書きすることができます。テンプレートの読み込みの詳細については

参照Djangoのドキュメント:​​

+0

基本的に、あなたは他のアプリからすべてのテンプレートと静的資産をオーバーライドするために使用される "aaa"という追加のアプリを提案しています。私はそれを試してみたい、私はDjangoがプロジェクトディレクトリの外からテンプレートと資産を読み込ませる方法があることを望んでいた。 (たとえば、テンプレートを含む非アプリフォルダーの場合はAPP_DIRS:Trueを使用してください。 – acidjunk

関連する問題