django模型的knockout.js的超级简单模型视图
django-knockout-modeler的Python项目详细描述
![詹戈淘汰赛!](http://i.imgur.com/nf7vxq6.gif)
django knockout modeler[![构建状态](https://travis ci.org/miserlou/django knockout modeler.svg)(https://travis-ci.org/miserlou/django-knockout-modeler)[![pypi](https://img.shields.io/pypi/dm/django-knockout-modeler.svg?style=flat)](https://pypi.python.org/pypi/django knockout-out modeler/)
===
**django knockout-out modeler**使django模型使用knockout.js变得超级简单。对于具有许多不同模型的对象或具有许多不同字段的模型的项目,或者同时具有这两个字段的项目,它非常有用。它既可以用于复杂应用程序的原型设计,也可以直接用于简单应用程序的模板中。
**django knockout modeler**将其转换为:
``python
class myobject(models.model):
mynumber=models.integerfield()
myname=models.charfield()
myobjects=myobject.objects.all()
```
myobjectViewModel(){
var self=this;
self.myobjects=ko.observatarray(myobjectdata);
self.myobjects.push(myobject);
;
self.removemoyobject=function(myobject){
self.myobjects.remove(myobject)
};
self.sortmyobjectsasc=function(){
self.myobjects(self.myobjects().sort(function(a,b){
返回a.mynumber>;b.mynumber?-1:A.MyNumber<;B.MyNumber?1:0;
};
};
self.sortmyobjectsdesc=function(){
self.myobjects(self.myobjects().sort(function(a,b){
返回a.mynumber<;b.mynumber?-1:A.MyNumber>;B.MyNumber?1:0;
});
};
}
ko.applybindings(new myobjectviewmodel(),$('\myobjects')[0]);
`````
``django
{{{myobjects knockout}
```
快速启动
----
>0。安装django knockout modeler
`` python
pip安装django knockout modeler
```
1。将"knockout modeler"添加到已安装的应用程序设置中,如下所示:
`` python
已安装的应用程序=(
…
'knockout modeler',
)
````
2。在HTML中包含knockout.js:
`` HTML
<;script type='text/javascript'src='https://cdnjs.cloudflare.com/ajax/libs/knockout/2.3.0/knockout-min.js'>;
```
4。敲除您的查询集:
``html
{%load knockout%}
<;script>;
{{myobjects{knockout}
<;script>;
```
>5。将您的结果模板化:
``html
<;script type="text/html"id="mytemplate">;
<;div>;
<;h2>;<;span data bind="text:myname">;<;span>;<;/h2>;
<;h3>;<;span data bind="text:mynumber">;<;span>;<;h3>;
<;/div>;
<;/script>;
````
>6。像这样循环绑定数据:
``html
<;div id="myobjects">;
<;div data bind="template:{name:'mytemplate',foreach:myobjects}">;
<;/div>;
```
**可以直接在模板中使用以生成淘汰模型和淘汰就绪数据,也可以选择其中之一。要将queryset直接作为knockout对象放入django模板中,可以执行以下操作:
``django
{{myobjects_knockout}
`````
>要单独获取数据对象,可以执行以下操作:
``django
{{myobjects_knockout_data}
````
得到公正模型,如果您更喜欢从api中加载数据,比如这样:
``django
{{{myobjects{knockout{myobjects{knockout{myobject{knockout{myobjects{{myobjects{{myobjects{knockout}
``django
{{{{myobjects{{myobjects{knockout}}
````
>progammamatic用法
<首先,导入它!
``python
_数据(你的查询集)
`````
或者..
```python
ko s=ko_json(你的查询集)
``````
>而且,令人惊讶的是,你可以对模型字符串做同样的操作:
````python
```python
``ko s=ko-ko模型(你的模型)
```````
也允许自定义字段集:
```python
fields=['custom','fieldset','allowed']
ko-s=ko(entries,fields)
`````
access control
--
如果不想将整个模型公开为knockout,可以在模型中定义一个函数:
``python
def knockout fields(self):
return['name','number']
```
默认情况下,它使用对象的u to_u dict()方法中的键。对于计算属性,可以使用python的"属性"函数。
sorting
----
django knockout提供了一些方便的数据排序方法。默认情况下,它将使用对象的"id"字段,但您也可以像这样定义自己的比较器:
``python
@classmethod
def comparator(self):
return'value'
````
pport
----
``javascript
`ko.applybindings(new myobjectviewmodel(),$(''myobjects')[0]);
`````
e在HTML模板中,需要有一个具有该ID的对象,如下所示:
``html
<;div id="myobjects">;
<;div data bind="foreach:myobjects">;
用户<;span data bind="text:myname">;<;/span>;是数字<;span data bind="text:mynumber">;<;/SPAN>;
<;div>;
<;div>;
````
这对于原型设计很方便,但是更高级的应用程序可能希望使用[master viewmodel]技术(http://stackoverflow.com/a/9294752/1135467)。
如果您使用的是多数据支持同一类型的多个查询集,需要为数据变量定义自定义名称。
``django
{{myobjects{knockout}data:'mynamedobjectsdata'}
````
您还必须使用"safe"模板标记:
``django
{{myobjects_knockout_u data:'mynamedobjectsdata,safe''safe}
```
如果你发现问题,请归档!
django knockout modeler[![构建状态](https://travis ci.org/miserlou/django knockout modeler.svg)(https://travis-ci.org/miserlou/django-knockout-modeler)[![pypi](https://img.shields.io/pypi/dm/django-knockout-modeler.svg?style=flat)](https://pypi.python.org/pypi/django knockout-out modeler/)
===
**django knockout-out modeler**使django模型使用knockout.js变得超级简单。对于具有许多不同模型的对象或具有许多不同字段的模型的项目,或者同时具有这两个字段的项目,它非常有用。它既可以用于复杂应用程序的原型设计,也可以直接用于简单应用程序的模板中。
**django knockout modeler**将其转换为:
``python
class myobject(models.model):
mynumber=models.integerfield()
myname=models.charfield()
myobjects=myobject.objects.all()
```
myobjectViewModel(){
var self=this;
self.myobjects=ko.observatarray(myobjectdata);
;
self.removemoyobject=function(myobject){
self.myobjects.remove(myobject)
};
self.sortmyobjectsasc=function(){
self.myobjects(self.myobjects().sort(function(a,b){
返回a.mynumber>;b.mynumber?-1:A.MyNumber<;B.MyNumber?1:0;
};
};
self.sortmyobjectsdesc=function(){
self.myobjects(self.myobjects().sort(function(a,b){
返回a.mynumber<;b.mynumber?-1:A.MyNumber>;B.MyNumber?1:0;
});
};
}
ko.applybindings(new myobjectviewmodel(),$('\myobjects')[0]);
`````
``django
{{{myobjects knockout}
```
快速启动
----
>0。安装django knockout modeler
`` python
pip安装django knockout modeler
```
1。将"knockout modeler"添加到已安装的应用程序设置中,如下所示:
`` python
已安装的应用程序=(
…
'knockout modeler',
)
````
2。在HTML中包含knockout.js:
`` HTML
<;script type='text/javascript'src='https://cdnjs.cloudflare.com/ajax/libs/knockout/2.3.0/knockout-min.js'>;
```
4。敲除您的查询集:
``html
{%load knockout%}
<;script>;
{{myobjects{knockout}
<;script>;
```
>5。将您的结果模板化:
``html
<;script type="text/html"id="mytemplate">;
<;div>;
<;h2>;<;span data bind="text:myname">;<;span>;<;/h2>;
<;h3>;<;span data bind="text:mynumber">;<;span>;<;h3>;
<;/div>;
<;/script>;
````
>6。像这样循环绑定数据:
``html
<;div id="myobjects">;
<;div data bind="template:{name:'mytemplate',foreach:myobjects}">;
<;/div>;
```
**可以直接在模板中使用以生成淘汰模型和淘汰就绪数据,也可以选择其中之一。要将queryset直接作为knockout对象放入django模板中,可以执行以下操作:
``django
{{myobjects_knockout}
`````
>要单独获取数据对象,可以执行以下操作:
``django
{{myobjects_knockout_data}
````
得到公正模型,如果您更喜欢从api中加载数据,比如这样:
``django
{{{myobjects{knockout{myobjects{knockout{myobject{knockout{myobjects{{myobjects{{myobjects{knockout}
``django
{{{{myobjects{{myobjects{knockout}}
````
>progammamatic用法
``python
_数据(你的查询集)
`````
或者..
```python
ko s=ko_json(你的查询集)
``````
>而且,令人惊讶的是,你可以对模型字符串做同样的操作:
````python
```python
``ko s=ko-ko模型(你的模型)
```````
也允许自定义字段集:
```python
fields=['custom','fieldset','allowed']
ko-s=ko(entries,fields)
`````
access control
--
如果不想将整个模型公开为knockout,可以在模型中定义一个函数:
``python
def knockout fields(self):
return['name','number']
```
默认情况下,它使用对象的u to_u dict()方法中的键。对于计算属性,可以使用python的"属性"函数。
sorting
----
django knockout提供了一些方便的数据排序方法。默认情况下,它将使用对象的"id"字段,但您也可以像这样定义自己的比较器:
``python
@classmethod
def comparator(self):
return'value'
````
pport
----
``javascript
`ko.applybindings(new myobjectviewmodel(),$(''myobjects')[0]);
`````
e在HTML模板中,需要有一个具有该ID的对象,如下所示:
``html
<;div id="myobjects">;
<;div data bind="foreach:myobjects">;
用户<;span data bind="text:myname">;<;/span>;是数字<;span data bind="text:mynumber">;<;/SPAN>;
<;div>;
<;div>;
````
这对于原型设计很方便,但是更高级的应用程序可能希望使用[master viewmodel]技术(http://stackoverflow.com/a/9294752/1135467)。
如果您使用的是多数据支持同一类型的多个查询集,需要为数据变量定义自定义名称。
``django
{{myobjects{knockout}data:'mynamedobjectsdata'}
````
您还必须使用"safe"模板标记:
``django
{{myobjects_knockout_u data:'mynamedobjectsdata,safe''safe}
```
如果你发现问题,请归档!