use*_*064 13 python django django-templates
在django模板中,我想使用对象的pk获取对象的名称.例如,鉴于我有来自类的pk对象A
,我想做类似以下的事情:
{{ A.objects.get(pk=A_pk).name }}
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
Cés*_*sar 13
来自Django模板语言的文档:
因为Django故意限制模板语言中可用的逻辑处理量,所以不可能将参数传递给从模板内访问的方法调用.应在视图中计算数据,然后传递给模板进行显示.
所以你看,你应该在你的计算中 views.py:
def my_view(request, A_pk):
...
a = A.objects.get(pk=A_pk)
...
return render_to_response('myapp/mytemplate.html', {'a': a})
Run Code Online (Sandbox Code Playgroud)
在您的模板中:
{{ a.name }}
{{ a.some_field }}
{{ a.some_other_field }}
Run Code Online (Sandbox Code Playgroud)
小智 9
如果您愿意,可以添加自己的标签.像这样:
from django import template
register = template.Library()
@register.simple_tag
def get_obj(pk, attr):
obj = getattr(A.objects.get(pk=int(pk)), attr)
return obj
Run Code Online (Sandbox Code Playgroud)
然后在模板中加载标记
{% load get_obj from your_module %}
Run Code Online (Sandbox Code Playgroud)
并使用它
{% get_obj "A_pk" "name" %}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13765 次 |
最近记录: |