将对象定位到页面上任何位置的应用程序。
django-kamasutra的Python项目详细描述
版本0.2.2中所做的向后不兼容更改
combine_string现在用于在使用 PositionContent.render或render_content模板标记。
之前:
/位置/我的位置/<;应用程序>;模型>;.html
新的:
/位置/我的位置/<;app>;<;组合字符串>;<;model>;.html
安装
使用pip:
pip install django-kamasutra
或者下载应用程序here
python setup.py install
将位置添加到您的设置已安装的应用:
INSTALLED_APPS = ( ... 'positions', ... )
将positions添加到您的url:
import positions.urls urlpatterns += patterns('', url(r'^positions/', include(positions.urls)), )
运行syncdb:
>>> ./manage.py syncdb
开始
创建您的第一个职位
创建位置所需的最小参数是一个名称,它是一个段塞字段。
from positions.models import Position position = Position.objects.create(name="MyPosition")
在你的位置添加一些内容
position manager有一个add_object方法,它至少接受两个参数,position和obj
- position应该是位置。position实例
- obj可以是任何模型实例
from myapp.models import MyApp obj = MyApp.objects.get_latest() Position.objects.add_object(position=position, obj=obj)
注意
位置模型可以定义可以添加的对象类型。 因此,在向位置添加对象时,请确保内容类型 由位置实例允许。
检索职位内容
Position Manager有一个获取内容的方法,该方法至少接受一个参数,即Position。
- position应该是位置。position实例
position = Position.objects.get(name="MyPosition") content = Position.objects.get_content(position=position)
通过templateTag检索职位内容
{% get_position_content position as content %}
获取位置内容需要[position][as][varname]
- position可以是positions.position实例或position的名称
Position {{ position }} has the following content:<br/> <ul> {% for obj in content %} <li>{{ obj }}</li> {% endfor %} </ul>
注意
默认情况下,将返回对象实例,但也可以返回positions.positioncontent实例,该实例保存位置和对象之间的通用关系
{% get_position_content position as content as_content_type=False %}