【问题标题】:How to add jQuery / HTML to Django Model Forms?如何将 jQuery / HTML 添加到 Django 模型表单?
【发布时间】:2016-06-02 23:51:27
【问题描述】:

我正在尝试将 conditionize.js(如 this example 所示)与我的 Django 模型表单集成。由于模板只是这样:

{{ form|crispy }}

在该示例中无法添加所有 HTML。我发现你可以像这样在 forms.py 中为表单添加一个类:

'month': MonthYearWidget(attrs={'class': 'monthfieldclass'})

并在该类中添加所有 css,但我不确定如何在 HTML 中添加所有其他内容,例如“data-cond-option”和输入类型,以使 jQuery 工作。

我还找到了Django Widget Tweaks 库,但我不确定如何让它与 django-crispy-forms 一起运行,所以虽然我知道最好不要混淆后端和前端逻辑,但我还是坚持正在寻找一种将 html 中的所有内容添加到表单中的方法。

感谢您的帮助!

【问题讨论】:

    标签: jquery html django django-models django-forms


    【解决方案1】:

    编写您自己的模板标签。您肯定可以在 Django 小部件调整中找到灵感:https://github.com/kmike/django-widget-tweaks/blob/master/widget_tweaks/templatetags/widget_tweaks.py

    例如,您可以编写标签以将html属性添加到任何元素:

    from django import template
    from django.utils.html import conditional_escape
    from django.utils.safestring import mark_safe
    
    register = template.Library()
    
    @register.filter()
    def add_attr(element, attr, value):
        result = element.replace('>', ' %s="%s">' % (attr, value), 1)
    return mark_safe(result)
    

    将所需的 html 属性及其值附加到 html 元素的末尾。这只是基本示例,不处理扩展 css 类等,您可能需要使用正则表达式来处理所有情况的更复杂的方法。

    然后在你的模板中你可以使用它

    {{ form|add_attr|crispy }}
    

    (可能需要切换标签)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-11
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 2014-08-05
      相关资源
      最近更新 更多