【问题标题】:Google App Engine Python If Else Usage in Html TemplateGoogle App Engine Python If Else 在 Html 模板中的用法
【发布时间】:2011-06-18 11:10:50
【问题描述】:

我正在使用 python 在谷歌应用引擎中创建一个网站。不幸的是,我找不到任何关于我的问题的信息。我必须根据变量的内容来区分它。

例如我要发送这样的变量

content = {
       'mail':session.get('user_mail',''),
       'role':'Admin',
       }
render_template(self, 'index.html', content)

如果它是“登录”用户或“管理员”用户,我需要这样的代码来理解用户的类型。

{% if role == 'Ordinary' %}
    {{ role }}
{% elif role == 'Admin' %}
    {{ role }}
{% endif %}

我该怎么做?

或者你可以向我推荐更好的设计。

谢谢...

【问题讨论】:

  • 那么,您的问题是什么?您发布的内容有什么问题?
  • 为什么需要一个标记为登录的注销链接?
  • 对不起,这只是一个链接,我会编辑它@Gabi Purcaru。问题是我不能对“角色”变量进行这样的检查。我想看看它是“登录”还是“管理员”。当我使用 {% if role == 'Login' %} 时,它会给出有关 if else 用法的错误。在示例代码中,'if' 的用法类似于 {% if role %}。那么我该如何利用这个'if'。

标签: python html google-app-engine django-templates


【解决方案1】:

django 模板中没有elif。使用这样的东西:

{% if role == 'Login' %}
 ... stuff
{% else %}{% if role eq 'Admin' %}
 ... stuff
{% endif %}

或者,ifequal

{% ifequal role "Login" %}
 ... stuff
{% else %}{% ifequal role "Admin" %}
 ... stuff
{% endifequal %}

【讨论】:

  • TemplateSyntaxError: 'if' 语句格式不正确会出现这样的错误。
  • @gurkan 尝试使用第二个版本
【解决方案2】:

把逻辑放在你的视图函数中:

content = {
   'mail':session.get('user_mail',''),
   'role':'Admin',
   'show_role':True,
   }

content = {
   'mail':session.get('user_mail',''),
   'role':'YetAnther',
   'show_role':False,
   }

那么你的模板很简单

{% if show_role %}{{role}}{% endif %}

【讨论】:

  • 我试图避免这种情况,但如果没有其他办法,我想我会继续这样做。谢谢你..
  • 为什么要避免呢?这就是框架应该被使用的方式。
  • “角色”内容实际上来自数据存储区。因此,如果我将新的 userRole 添加到数据存储区,那么我必须相应地更改我的逻辑。
  • @gurkan:您可以在两个地方之一更改您的逻辑——模板或视图函数。角色的含义是应用程序的一部分,而不是演示的一部分。应用程序视图函数提供“show_role”标志,因为应用程序已决定显示或不显示角色。该模板只呈现数据,没有决策,也没有特定于应用程序的规则。实际上,“show_role”标志可用于选择样式而不是显示内容。
猜你喜欢
  • 2011-12-19
  • 2014-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-09
  • 1970-01-01
  • 2011-08-06
  • 1970-01-01
相关资源
最近更新 更多