Как использовать rocket::response::Flash в шаблоне tera
В настоящее время я переписываю веб-приложение, построенное на python / flask, которое использует вспышки следующим образом:
{% with flashes = get_flashed_messages() %}
{% if flashes %}
<ul class=flashes>
{% for message in flashes %}
<li>{{ message }}
{% endfor %}
</ul>
{% endif %}
{% endwith %}
Я новичок как в Rust, так и в Rocket, и я не могу найти никакой документации о том, как обрабатывать flash cookie в шаблоне tera. Есть ли способ сделать это, или я подхожу к проблеме с неправильной точки зрения?
В настоящее время я реорганизовал его во что-то вроде того, что показано ниже, но, очевидно,
get_flashed_messages()
часть не работает.
{% set flashes = get_flashed_messages() %}
{% if flashes %}
<ul class=flashes>
{% for message in flashes %}
<li>{{ message }}
{% endfor %}
</ul>
{% endif %}
1 ответ
Вот ответ и источник. Вдохновение для моего решения -> https://github.com/SergioBenitez/Rocket/issues/14#issuecomment-710698003
Мое рабочее решение:
//some.html.tera file
...
{% if flash %}
<p>{{flash}}</p>
{% endif %}
...
моя функция, которая потребляет флеш-сообщение
#[get("/signup")]
fn signup_page(flash: Option<FlashMessage>) -> Template {
let mut context: HashMap<&str, Option<String>> = HashMap::new();
context.insert("flash", flash.map(|msg| format!("{}! {}", msg.name(), msg.msg())));
Template::render("signup", &context)
}