用于Materialize的Django自定义小部件找不到模板

时间:2019-12-10 11:54:58

标签: python django django-forms django-templates django-widget

我们在项目中使用Django 3和Materialize CSS,并且在渲染表单时未显示复选框。这是因为Materialize需要以一种特殊的方式(reference)为它们设置样式,并且我们的Django模型形式无法发挥作用。由于我们不希望一个简单的复选框具有任何依赖关系,但是我们需要以不同的形式一遍又一遍地执行此操作,因此我们创建了一个自定义小部件,仅使用一个单独的模板来呈现该复选框:

class MaterializeSwitch(forms.widgets.CheckboxInput):
    template_name = os.path.join(STATICFILES_DIRS[0], 'widgets', 'cb_materialize.html')

    def __init__(self, attrs={}, *args, **kwargs):
        super().__init__(attrs)

如果我对this is how it is done in Django internally的理解正确,而只是将默认template_name替换为我们的自定义变量:

<div class="switch"><label>On<input type="{{ widget.type }}" name="{{ widget.name }}" {% if widget.value != None %}value="{{ widget.value|stringformat:'s' }}"{% endif %}>Off</label></div>

与此控件一起使用一个字段时,会出现错误消息TemplateDoesNotExist at [...],其中[...]正是该控件存储的路径。

  

这是一个很长的问题,我不想向它发送更多路径和信息来作为垃圾邮件。如果还有其他信息需要解决,我会根据要求添加。

0 个答案:

没有答案