我正在研究GoogleAppEngine事件示例,我正在努力 构建一个我可以输入事件数据的表单
from google.appengine.ext.db import djangoforms
class Event(db.Model):
title = db.StringProperty(required=True)
description = db.TextProperty()
time = db.DateTimeProperty()
location = db.TextProperty()
creator = db.UserProperty()
class EventForm(djangoforms.ModelForm):
class Meta:
model = Event
class EventsPage(webapp.RequestHandler):
def get(self):
eventform = EventForm()
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 = {
'events': events,
'eventform': eventform,
'url': url,
'url_linktext': url_linktext,
}
template = jinja_environment.get_template('events.html')
self.response.out.write(template.render(template_values))
----events.html----
<html>
<head>
<link type="text/css" rel="stylesheet" href="/stylesheets/main.css" />
</head>
<body>
{% for event in events %}
<blockquote>{{ event.content|escape }}</blockquote>
{% endfor %}
<form action="/newevent" method="post">
<!-- Even though <table> is below, event form is not put inside <table>. Why?? -->
<table>
{{ eventform|escape }}
</table>
<div><input type="submit" value="New Event"></div>
</form>
<a href="{{ url }}">{{ url_linktext }}</a>
</body>
</html>
当我运行我的代码时,以下内容将作为文本呈现在我的页面上:
<tr><th><label for="id_title">Title:</label></th><td><input type="text"
name="title" id="id_title" /></td></tr> <tr><th><label
for="id_description">Description:</label></th><td><textarea id="id_description"
rows="10" cols="40" name="description"></textarea></td></tr> <tr><th><label
for="id_time">Time:</label></th><td><input type="text" name="time" id="id_time"
/></td></tr> <tr><th><label
for="id_location">Location:</label></th><td><textarea id="id_location"
rows="10" cols="40" name="location"></textarea></td></tr> <tr><th><label
for="id_creator">Creator:</label></th><td><input type="text" name="creator"
id="id_creator" /></td></tr>
我可以告诉这是表格代码,我希望页面呈现为表格形式,而不是文本。任何想法为什么会这样?以及如何 让它呈现为一种形式?
答案 0 :(得分:0)
我对Jinja并不熟悉,根据Jinja2文档,默认情况下它似乎逃脱了所有HTML。
通过查看上面的模板,我发现您在'eventform'上使用'escape'过滤器,我无法找到有关Jinja过滤器的信息。此外,如果您希望将表单呈现为HTML表单,那么为什么我们需要将其转义呢?
{{eventform | escape}}