django - 使用带有 django 表单的knockout.js?

标签 django knockout.js

我希望在我的客户端代码中添加一些结构,并且一直在阅读有关 knockout.js 的信息。 .我一直在阅读文档并有一个简单的问题要问 - 因为 knockout 要求用户添加 data-bind html 元素的属性,它与 django 一起工作的最佳方式是什么?表格,因为目前我正在使用 {{ form.as_p }}
我很好奇我应该如何以及在哪里形成对 view model 的输入(如果它在 Django 的表单字段中,或者没收 {{ form.as_p }} 并在 html 中输入。

最佳答案

您可以使用小部件向表单的元定义中的字段添加自定义属性。

class SomeForm(forms.ModelForm):
    class Meta:
        model = SomeModel
        widgets = {'field_name1': forms.Textarea(attrs={'data-bind':'value: field1'}),
                   'field_name2': forms.TextInput(attrs={'data-bind':'value: field2'})}

例如,第一个字段将被呈现:
<textarea id="id_field_name1" name="field_name1" data-bind="value: field1"></textarea>

更新:
作为奖励,这里有一种简单的方法来更改表单中每个字段的属性,例如,如果它们都需要特定的类(对其他 js 插件或 css 样式很有帮助)
    def __init__(self, *args, **kwargs):
        super(SomeForm, self).__init__(*args, **kwargs)
        for name, field in self.fields.items():
            field.widget.attrs['class'] = 'some_form_field'
            # this could be used in your case if the Django field name is the
            # same as the KO.js field name
            field.widget.attrs['data-bind'] = 'value: %s' % name

关于django - 使用带有 django 表单的knockout.js?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10403094/

相关文章:

jquery - Django 。 Ajax 。这样发送csrf token是不是错了?

django - 从信号调用 celery 任务

javascript - 'click' 绑定(bind)不工作 - 无法调用函数 - Knockout.js

与浏览器相比,Android Worklight 应用程序 UI 性能较差

javascript - Knockout.js - 设置/更改可观察对象后 UI 未更新

knockout.js - Knockout multiple select selectedOptions 在加载时未选择

javascript - 设置为本地存储 knockout 后更新 View

django - 没有在带有 Docker 的 Django 应用程序上提交工作服

django - verbose_name_plural 命名约定

javascript - 如何获取模型表单按钮的点击事件?