基本的谷歌应用引擎(python)模板问题

时间:2010-02-01 19:35:13

标签: python django google-app-engine

在浏览了app引擎和webapp框架的一些基础教程之后,我试图显示与我创建的项目构造相关的文档(例如{%ifequal project.key doc.parentproject%})我创建了几个确实有一个与项目中的键相同的doc.parentproject的文档,但不知怎的,这个for循环永远不会运行。如果我用project.key替换实际的项目键值,那么它对于那些特定的kets返回true。我在这里缺少一些基本的模板吗?我无法在谷歌或django网站上找到任何答案(webapp使用django模板引擎)。任何帮助,将不胜感激。

很抱歉,如果这是基本的新材料......

{% for project in projects %}
  <blockquote>  
<div style="border:1px solid #999; padding:20px;">  
<h3>{{ project.projectname|escape }} </h3>

<h5>{{ project.key }}</h5>

    <table border="1" cellpadding="5" cellspacing="0" width="600">
        <tr>
            <td>Doc Feed Name</td>
            <td>Feed author</td>
            <td>Spreadsheet URL</td>
            <td>Parent Project Key</td>
            <td>Created on</td>
            <td>&nbsp;</td>
        </tr>

    {% for doc in docs %}
        {% ifequal project.key doc.parentproject %}
            <tr>
                <td>doc name:{{ doc.name|escape }}</td>
                <td>{{ doc.author }}</td>
                <td>{{ doc.link }}</td>
                <td>{{ doc.parentproject }}</td>
                <td>{{ doc.date }}</td>
                <td>Delete</td>
            </tr>
        {% endifequal %}
    {% endfor %}
    </table>

{%endfor%}

2 个答案:

答案 0 :(得分:1)

如果没有看到为此模板提供值的控制器代码,很难真正诊断出您遇到的问题,但我猜想 docs 变量没有得到列表 doc 明确期望的实体。

从一个好的设计角度来看,我建议给Project实体一个属性,该属性包含与之关联的文档列表。看起来每个文档都依赖于父项目,因此使用此代码会更简洁,更容易:

 {% for doc in project.docs %}
   ...do my rendering here...
 {% endfor %}

比你拥有的。

答案 1 :(得分:0)

如果“doc”是一个实体,并且“parentproject”是该实体上的ReferenceProperty,那么这里的问题是您正在尝试将Key与实体进行比较(ReferenceProperties会自动解析它们的引用)。你需要改用它:

{% ifequal project.key doc.parentproject.key %}