覆盖Django小部件的默认模板

use*_*631 10 django django-templates django-widget

我想覆盖Django(2.01)小部件模板,因为我需要为每个输入,标签添加类,并以不同的方式定位它们

app
 - templates
 - app 
    - django
       - forms
           - widgets
             - input.html
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述 要么

app
 - templates
   - django
      - forms
          - widgets
             - input.html
Run Code Online (Sandbox Code Playgroud)

或模板项目目录:

- templates
   - django
      - forms
          - widgets
             - input.html
Run Code Online (Sandbox Code Playgroud)

它们都不起作用(即使我这是在文档中推荐的方式,也是我在stackoverflow上看到的答案),它仍然从默认加载.

作为一般的小部件的模板,我宁愿把他们的模板项目目录,但是从我的芦苇默认情况下,小部件安装的应用程序只搜索.

jus*_*gel 11

看起来这是Django 1.11中的一个问题.

Django小部件模板覆盖不会在项目模板目录中搜索.怎么修?

这有点烦人.通过更改您的设置来修复它.因此,您的主站点必须具有这些设置.

INSTALLED_APPS = [
    ...
    'django.forms',
    ...
]

FORM_RENDERER = 'django.forms.renderers.TemplatesSetting'
Run Code Online (Sandbox Code Playgroud)

不幸的是,您无法通过已安装的应用程序自动执行此操作.如果安装的应用程序覆盖了django模板小部件,则需要对其进行记录,并且用户必须在其站点设置中添加此代码.

您无需在"模板"设置中更改任何内容.以下是我的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',
            ],
        },
    },
]
Run Code Online (Sandbox Code Playgroud)