首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Tera在呈现模板时会说TemplateNotFound?

为什么Tera在呈现模板时会说TemplateNotFound?
EN

Stack Overflow用户
提问于 2021-04-01 01:17:08
回答 1查看 439关注 0票数 1

我正在尝试使用Tera在Rust中构建一个web应用程序,每次在下面的render()调用中都会出现恐慌。代码块的示例:

代码语言:javascript
复制
async fn login(tera: web::Data<Tera>) -> impl Responder {
    let mut data = Context::new();
    data.insert("title", "Login");

    let rendered = tera.render("login.html", &data).unwrap();
    HttpResponse::Ok().body(rendered)
}

链接到我的回购审查:https://github.com/ClusterberrySquirrels/oasis/blob/oasis_db/src/main.rs

我接到以下惊慌电话:

代码语言:javascript
复制
thread 'actix-rt:worker:0' panicked at 'called `Result::unwrap()` on an `Err` value: Error { kind: TemplateNotFound("login.html"), source: None }', src/main.rs:101:53

当我在index.html页面上这个项目开始时遇到同样的问题时,有些东西解决了这种恐慌。起初我以为是Tera引起了这个问题,但我没有找到任何步骤来解决它。最后,我做了一些事情,使它表现得像预期的那样,直到现在一切都很好。我希望能就如何解决这一问题和避免将来发生这种情况提出任何建议。

档案结构:

代码语言:javascript
复制
Project Folder\
  templates\
    login.html
    index.html
  src\
    main.rs

在我这边解决问题不一定是为了:

  1. 开关工具链默认从稳定的->货物构建/运行到每晚->货物的构建/运行。
  2. rustup更新
  3. sudo适当更新
  4. sudo

h 115wsl-set- default 2H 216h 117货物清洁H 218H 119>/code>删除目标文件夹,然后清除货物、货物建造、货物运行H 220<代码>H 121货物更新代码><代码G 223><代码G 223。

更新到问题:最少可重复的例子。

代码语言:javascript
复制
use actix_web::{HttpServer, App, web, HttpResponse, Responder};
use tera::{Tera, Context};

async fn index(tera: web::Data<Tera>) -> impl Responder {
    let mut data = Context::new();

    let posts = [
        Post {
            title: String::from("This is the first link"),
            link: String::from("https://example.com"),
            author: String::from("Nutrition-Tracker"),
        },
        Post {
            title: String::from("This is the second Link"),
            link: String::from("https://example.com"),
            author: String::from("Other cool app"),
        },
    ];

    data.insert("title", "index");
    data.insert("posts", &posts);

    let rendered = tera.render("index.html", &data).unwrap(); // TemplateNotFound??
    HttpResponse::Ok().body(rendered)
}

async fn login(tera: web::Data<Tera>) -> impl Responder {
    let mut data = Context::new();
    data.insert("title", "Login");

    let rendered = tera.render("login.html", &data).unwrap(); // TemplateNotFound??
    HttpResponse::Ok().body(rendered)
}

#[actix_web::main]
async fn main() -> std::io::Result<()> {
    HttpServer::new(|| {
        let tera = Tera::new("templates/**/*").unwrap(); 
        App::new()
            .data(tera)
            .route("/", web::get().to(index))
            .route("/login", web::get().to(login))
    })
        .bind("127.0.0.1:8000")?
        .run()
        .await
}
EN

回答 1

Stack Overflow用户

发布于 2021-04-08 00:06:08

我解决了这个问题。我也在为这个应用程序运行kubernetes,我选择的端口在任意时间被kubernetes占用。但是,问题仍然存在,这是另一个线程的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66897232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档