【发布时间】:2010-12-18 18:05:16
【问题描述】:
我正在阅读 Appengine 的 Python 入门指南,在阅读 templates 时,我修改了代码(这是一个简单的留言簿)以在留言簿条目旁边包含简单的编号。
在 index.html 中,我添加了(我认为应该是的)相关代码。
index.html(我在第 3 行添加了 {%i=0%},在第 5 行添加了 {%i+=1%},在第 7 行添加了 {{i}},其余来自指南):
<html>
<body>
{%i=0%}
{% for greeting in greetings %}
{%i+=1%}
{% if greeting.author %}
<b>{{i}}:{{ greeting.author.nickname }}</b> wrote:
{% else %}
An anonymous person wrote:
{% endif %}
<blockquote>{{ greeting.content|escape }}</blockquote>
{% endfor %}
<form action="/sign" method="post">
<div><textarea name="content" rows="3" cols="60"></textarea></div>
<div><input type="submit" value="Sign Guestbook"></div>
</form>
<a href="{{ url }}">{{ url_linktext }}</a>
</body>
</html>
我收到以下错误
TemplateSyntaxError: 无效块 标签:'i=0'
我在 templates 上阅读了 Django 的帮助,上面写着
Django 模板系统提供 功能与某些类似的标签 编程结构——一个 if 标记 布尔测试,用于循环的 for 标记, 等等——但这些不仅仅是 作为相应的 Python 执行 代码,模板系统不会 执行任意 Python 表达式。
所以我猜,执行计算不是模板系统的用途。
tl;dr
谁能告诉我如何使用 Django 模板对条目进行编号或使用“计数器 - 增量”构造?
我不认为这段代码是必需的,但要完成图片,
helloworld.py 代码不变:
import os
from google.appengine.ext.webapp import template
import cgi
from google.appengine.api import users
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.ext import db
class Greeting(db.Model):
author = db.UserProperty()
content = db.StringProperty(multiline=True)
date = db.DateTimeProperty(auto_now_add=True)
class MainPage(webapp.RequestHandler):
def get(self):
greetings_query = Greeting.all().order('-date')
greetings = greetings_query.fetch(10)
if users.get_current_user():
url = users.create_logout_url(self.request.uri)
url_linktext = 'Logout'
else:
url = users.create_login_url(self.request.uri)
url_linktext = 'Login'
template_values = {
'greetings': greetings,
'url': url,
'url_linktext': url_linktext,
}
path = os.path.join(os.path.dirname(__file__), 'index.html')
self.response.out.write(template.render(path, template_values))
class Guestbook(webapp.RequestHandler):
def post(self):
greeting = Greeting()
if users.get_current_user():
greeting.author = users.get_current_user()
greeting.content = self.request.get('content')
greeting.put()
self.redirect('/')
application = webapp.WSGIApplication(
[('/', MainPage),
('/sign', Guestbook)],
debug=True)
def main():
run_wsgi_app(application)
if __name__ == "__main__":
main()
【问题讨论】:
标签: python django google-app-engine