Я новичок в шаблонах Flask и Jinja2 и HTML, и я пытаюсь научиться передавать информацию между контроллером и представлениями. По сути, у меня есть календарь событий. Каждое имя события является гиперссылкой, которая использует от url_for
до go для просмотра дополнительной информации об этом событии. Но хотя я легко могу передать список пользовательских объектов Event в файл HTML, я не знаю, как вернуть выбранный объект Event в контроллер. Из того, что я могу сказать, объект превращается в строку. Упрощенный код ниже.
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)
index. 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>
Нажатие на событие приводит меня к пустой странице, вероятно потому, что событие. html пытается получить атрибуты строкового объекта, который не существует.
Когда передача объекта python в представление настолько проста, кажется, что есть, вероятно, такой же простой способ вернуть его из поля зрения. Пожалуйста, просветите меня!