goh*_*goh 14 django knockout.js
我希望在我的客户端代码中添加一些结构,并一直在阅读knockout.js.我一直在阅读文档并提出一个简单的问题 - 因为淘汰需要用户向data-bindhtml元素添加属性,它与django表单一起使用的最佳方式是什么,因为目前我正在使用{{ form.as_p }}
我很好奇我应该如何以及在哪里形成输入view model(如果它在Django中的表单字段中,或者{{ form.as_p }}在html中伪造和输入.
j_s*_*syk 19
您可以使用窗口小部件在窗体的元定义中为字段添加自定义属性.
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'})}
Run Code Online (Sandbox Code Playgroud)
例如,将呈现第一个字段:
<textarea id="id_field_name1" name="field_name1" data-bind="value: field1"></textarea>
Run Code Online (Sandbox Code Playgroud)
更新: 作为奖励,这里是一种更改表单中每个字段的属性的简单方法,例如,如果它们都需要特定的类(有助于其他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
Run Code Online (Sandbox Code Playgroud)