use actix_web::web;use crate::handlers::*;use actix_files as fs;pub fn app_config(cfg: &mut web::ServiceConfig) {cfg.service(web::scope("").service(fs::Files::new("/static","./static").show_files_listing()).service(web::resource("/").route(web::get().to(get_all_teacher))).service(web::resource("/register").route(web::get().to(show_register_from))).service(web::resource("/register-post").route(web::post().to(handle_register))));}
模板引擎的使用
现在我们来依次编写里的处理函数
首先是默认路由的展示教师数据,首先我们使用这个包来调用我们之前编写的接口,测试的时候,我们要将之前编写的完整的增删改查的接口 api 项目在 3077 端口启动起来:
pub async fn get_all_teacher(tmpl: web::Data) -> Result {let awc_client = awc::Client::default();let res = awc_client.get("http://localhost:3077/teachers/").send().await.unwrap().json::
在获取数据之后我们把它添加到我们的模板里,我们开启一个 ctx 上下文,在其中插入和两个数据,之后我们将 .html 作为我们的模板,把上下文插入到这个模板中,现在这个模板就可以使用这两个变量了,通过模板引擎选然后会返回将模板的插值语句变为插入数据的网页代码,将它封装返回,用户就能看到完整的页面了:
pub async fn get_all_teacher(tmpl: web::Data) -> Result {let awc_client = awc::Client::default();let res = awc_client.get("http://localhost:3077/teachers/").send().await.unwrap().json::
如下是编写好的模板,因为这个内容不是本教程最关键介绍的编写页面的方案,所以这里就简单给出 demo,如果想要了解模板的更多编写方法可以自行查阅资料:
Teachers教师列表
{% for t in teachers %}
同样我们将我们的界面也写好,因为初始值都是空的,所以我们给与的上下文信息都是空的:
pub async fn show_register_from(tmpl: web::Data) -> Result {let mut ctx = tera::Context::new();ctx.insert("error", "");ctx.insert("current_name", "");ctx.insert("current_imageurl", "");ctx.insert("current_profile", "");let s = tmpl.render("register.html", &ctx).map_err(|_| MyError::TeraError("Template error".to_string()))?;Ok(HttpResponse::Ok().content_type("text/html").body(s))}
这是.html 的页面:
register注册老师
- 两金,六险两金,都有哪些
- 揭秘:秦始皇嬴政是怎样带领秦军统一六国的
- rust怎么修改服务器数据,rust怎么设置服务器图片
- 盘点:史上以失败告终的六次北伐
- 这六件东西的发明,彻底改变了人类历史,每件都影响历史发展
- 互联网思维的六大特性
- 古代的三姑六婆具体是指女性的什么职业
- 韩愈六次落榜背后:古文主张让骈文爱好者不快
- 曾倾倒天下男人的六朝第一美女结局有多惨
- 慈禧太后的六十寿诞是怎样过的?共花了多少钱