当前位置:  开发笔记 > 编程语言 > 正文

Django模板和变量属性

如何解决《Django模板和变量属性》经验,为你挑选了3个好方法。

我正在使用Google App Engine和Django模板.
我有一个表,我想显示对象看起来像:

Object Result:
    Items = [item1,item2]
    Users = [{name='username',item1=3,item2=4},..]

Django模板是:


    {% for item in result.items %}
        
    {% endfor %}


{% for user in result.users %}
    
        {% for item in result.items %}
            
        {% endfor %}
    
{% endfor %}
user{{item}}
{{user.name}}{{ user.item }}

现在,Django文档指出,当它看到一个.在变量中
它尝试了几个东西来获取数据,其中一个是字典查找,这正是我想要但似乎没有发生......



1> Yon..:

我找到了一个"更好"/"更好"的解决方案,用于获取变量,这不是最好的方式,但它的工作原理.

您在django中安装了一个自定义过滤器,它将dict的键作为参数获取

要使它在谷歌应用程序引擎中工作,你需要将文件添加到主目录,我打电话给我的django_hack.py包含这段小代码

from google.appengine.ext import webapp

register = webapp.template.create_template_register()

def hash(h,key):
    if key in h:
        return h[key]
    else:
        return None

register.filter(hash)

现在我们有了这个文件,我们需要做的就是告诉app-engine使用它...我们通过在你的主文件中添加这一小行来做到这一点

webapp.template.register_template_library('django_hack')

并在模板视图中添加此模板而不是通常的代码

{{ user|hash:item }}

它应该完美地工作=)



2> Dave Webb..:

我假设那部分不起作用{{ user.item }}.

Django将尝试字典查找,但使用字符串"item"而不是item循环变量的值.Django在解析对象{{ user.name }}name属性时做了同样的事情user,而不是寻找一个名为的变量name.

我认为在模板中渲染数据之前,您需要对视图中的数据进行一些预处理.



3> 小智..:

或者您可以使用默认的django系统,该系统用于解析tempaltes中的属性,如下所示:

from django.template import Variable, VariableDoesNotExist
@register.filter
def hash(object, attr):
    pseudo_context = { 'object' : object }
    try:
        value = Variable('object.%s' % attr).resolve(pseudo_context)
    except VariableDoesNotExist:
        value = None
return value

这才有效

在您的模板中:

{{ user|hash:item }}

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有