我是 Flask 和 Jinja2 以及 HTML 模板的新手,我正在尝试学习如何在控制器和视图之间来回传递信息。基本上,我有一个事件日历。每个事件名称都是一个超链接,用于转到包含有关该事件的详细信息的视图。但是,尽管我可以轻松地将自定义事件对象的列表传递到 HTML 文件中,但我不知道如何将选定的事件对象返回到控制器。据我所知,这个物体正在变成一个字符串。下面的简化代码。url_for
app.py
from flask import Flask, render_template, url_for
app = Flask(__name__)
class Event(object):
def __init__(self, name, date):
self.name = name
self.date = date
events = [Event('event1', '2020-04-11')]
@app.route('/')
def index():
return render_template('index.html', events=events)
@app.route('/event/<event>')
def event(event):
return render_template('event.html', event=event)
索引.html
<!DOCTYPE html>
<html>
<body>
{% for event in events %}
<a href={{ url_for('event', event=event) }}>{{ event.name }}</a>
{% endfor %}
</body>
</html>
事件.html
<!DOCTYPE html>
<html>
<body>
<p>{{ event.name }} {{ event.date }}</p>
</body>
</html>
单击该事件会将我带到空白页,大概是因为 event.html 正在尝试获取不存在的字符串对象的属性。
当将python对象传递到视图中是如此简单时,似乎可能有一种同样简单的方法可以将其从视图中取回。请启发我!
aluckdog
翻过高山走不出你
慕侠2389804