Как использовать 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)
}
Другие вопросы по тегам