2019年11月10日日曜日

Django Admin ウィジェットテンプレートの上書き

Django2.2でAdminのテンプレートをプロジェクト直下に持ってきて編集していたのですが、ウィジェットに関してはテンプレートが上書き適用できなかった。

調べたところなかなかややこしいですが、以下の方法でできました。

1.前提として、プロジェクト直下のtemplateディレクトリにパッケージのテンプレートをコピーして上書き適用するには、 settigs.pyに以下の設定が必要です。
settigs.py

TEMPLATES = [
    {
       ・・・・・・
        'DIRS': [os.path.join(BASE_DIR, 'templates')], #★ここを変更
        'APP_DIRS': True,
       ・・・・・・  
    },
]

2.settings.pyに以下を追加する。

FORM_RENDERER = 'django.forms.renderers.TemplatesSetting'

3.以下のような階層でdjango > forms > widgets ディレクトリを作りファイルをコピーする。

templates
├─admin
│  └─widgets
│          clearable_file_input.html #こちらのファイルを編集する
├─cms
├─django
│  └─forms
│      └─widgets
│              attrs.html
│              checkbox.html
│              checkbox_option.html
│              checkbox_select.html
│              clearable_file_input.html
                 #widgetsの中身を一式コピーしておく

とりあえずこれでOKでした。

参考:
Django、テンプレートファイルの探索順序について「ウィジェットテンプレートの上書き」
https://narito.ninja/blog/detail/135/  

0 件のコメント:

コメントを投稿