2

を使用するアプリを作成していますdjango-floppyforms。また、私のアプリはデフォルトのtwitter bootstrapスキンを提供するので、私のアプリでフロッピーフォームのテンプレートをカスタマイズして、ブートストラップを似たものにしています。floppyforms/{layouts, rows}/bootstrapアプリのテンプレート ディレクトリに配置しました。しかし、それは機能しません: django はそれらを使用しません。したがって、エンド ユーザーにカスタマイズされたテンプレートを自分のプロジェクトに配置するよう強制したくありません。実際、django がfloppyformsアプリ内コンテンツをレンダリングするときにローカル テンプレートを取得するように指示したいと考えています。不都合な依存関係なしにアプリをスタンドアロンにしたいだけです。

アップデート

今、私はdjango-admintools-bootstrapDjango 1.5.1. 以前に に追加されましadmin_toolsINSTALLED_APPSが、効果はありません。また、 の静的を収集しませんdjango-admintools-bootstrap。この 2 つのパッケージと Django 1.4 を使用する他の同様のプロジェクトでは、すべて正常に動作します。また、テンプレートの検索順序の変更について Django 1.5 のリリース ノートを確認しましたが、それについては何も見つかりませんでした。

4

2 に答える 2

9

更新された回答:

Django 1.8 以降、TEMPLATE_DIRSandTEMPLATE_LOADERSは廃止され、 に置き換えられましたTEMPLATES

例は次のTEMPLATESとおりです。

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
            os.path.join(BASE_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',
            ],
            # 'loaders': [
            #     'django.template.loaders.filesystem.Loader',
            #     'django.template.loaders.app_directories.Loader',
            # ],
            'debug': True,
        },
    },
]

テンプレートの検索順序は、次のように決定されます。

  • 本質的に最も重要な場所は、のloadersオプションですOPTIONS。これが定義されている場合、それがAPP_DIRS設定されていないことを要求し、そこにある明示的な順序に従います。

  • ローダーがなく、DIRS定義されている場合、これらはローダーとして優先されfilesystemます。

  • ローダーがなく、APP_DIRSが定義されている場合、これらは よりも 2 番目に優先されDIRSます。

上記は明示的に文書化されていませんが、既存の文書とおそらくいくつかの実験の後に簡単に推測できます。

于 2016-03-30T14:57:33.047 に答える
3

それらがアプリ テンプレート ディレクトリにない場合は、テンプレート ディレクトリの絶対パスをTEMPLATE_DIRS設定に追加します。これらのディレクトリは順番に検索されるので、先頭に追加してください。

それらがアプリディレクトリにある場合は'django.template.loaders.app_directories.Loader'、誰よりも先にTEMPLATE_LOADERS設定することをお勧めします。

また、テンプレートを指定する際にテンプレート名をどのように使用しているかを確認してください。として使用する必要があります'floppyforms/layouts/bootstrap/template1.html'

詳細については、テンプレート ローダーをご覧ください

于 2013-08-03T05:29:14.097 に答える