当前位置: 首页 > news >正文

flask踩坑集锦

很久之前用过flask,那时候是跟着教程,教程怎么做我就怎么做,没有仔细考虑过。

现在是全靠文档和搜索一步一步搭建,忘了很多东西,就碰了很多壁,浅浅记录一下子。

1.Jinja2的模板继承,是指抽出每个网页相同的部分,作为base,然后以base为底,在此基础上进行不同页面的展示。

比如,我一个网页设置了导航栏和背景,其他页面都是以此为基础显示不同内容,但是我又不想都写在同一个网页上显得杂乱,故此分离开来,应该是这样使用:

base.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>myWeb</title><link rel="stylesheet" type="text/css" href="../static/css/base.css"><link rel="stylesheet" type="text/css" href="../static/css/bootstrap.css"><script src="../static/js/jquery.min.js"></script><script type="text/javascript" src="../static/js/daterangepicker.js"></script><script type="text/javascript" src="../static/js/bootstrap.bundle.js"></script>
{% block head %}{% endblock %}
</head>
<body>
<nav class="navbar navbar-expand-lg bg-body-tertiary"><div class="container-fluid"><a class="navbar-brand" href="#">Navbar</a><button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation"><span class="navbar-toggler-icon"></span></button><div class="collapse navbar-collapse" id="navbarNav"><ul class="navbar-nav" id="myTab"><li class="nav-item"><a class="nav-link active" aria-current="page" href="/">Home</a></li><li class="nav-item"><a class="nav-link" href="/page1">page1</a></li><li class="nav-item"><a class="nav-link" href="/page2">page2</a></li><li class="nav-item"><a class="nav-link" href="/page3">page3</a></li></ul></div></div>
</nav>
{% block content %}{% endblock %}
</body>
<script>
$(document).ready(function () {$("#myTab").find("li").each(function () {var a = $(this).find("a:first")[0];console.log(location.pathname)if ($(a).attr("href") === location.pathname) {$(a).addClass("active");} else {$(a).removeClass("active");}});
});
</script >
</html>

可以注意到在这里我设置了两个代码块的区域,分别是block head和block content,这两个地方就是用于其他页面进行继承的,如果要引入只在子页面会用到的js之类,可以在block head里面添加,而页面主体显示部分则是在block content里面,当然我看别人的还把title也用block包裹方便子页面改名,我的业务没有相关需求就没改。

 home.html

{% extends "base.html" %}{% block content%}
<p>this is home page</p>
{% endblock %}

 page1.html

{% extends "base.html" %}{% block content%}
<p>this is page1</p>
{% endblock %}

其他的以此类推,这样就不需要重新写一次导航栏也能把不同页面分在不同的HTML文件当中了。

我之前踩的坑主要在于以为不同页面就要继承不同的代码块,在base定义了很多比如block home, block page1, block page2这种,然后再继承,后来发现显示出问题了,才醒悟过来既然显示的地方都一样就没必要新建那么多,都是替换同一块区域就行了,

相关文章:

  • 【Mybatis-Plus】常见的@table类注解
  • 算法题学习
  • Spring Security 6.1.x 系列(2)—— 基于过滤器的基础原理(一)
  • 免费(daoban)gpt,同时去除广告
  • SSH 端口转发:动态转发、本地转发、远程转发
  • git log 用法
  • Python数据分析实战-筛选出DataFrame中指定列都不包含缺失值的记录(附源码和实现效果)
  • 【Spring】SpringWebMVC入门
  • 自定义QChartView实现鼠标放在图表时,显示鼠标位置坐标值(x,y)
  • 能卷死同行的收银系统源码--服装店收银系统+进销存、PHP+mysql
  • 大文件分片上传并发
  • Linux———— 运算命令
  • PyTorch入门学习(十):神经网络-非线性激活
  • QT之多个界面相互切换 (stackedWidget控件)
  • 基于 golang 从零到一实现时间轮算法 (一)
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • iOS | NSProxy
  • iOS 系统授权开发
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • JavaScript-Array类型
  • JavaScript服务器推送技术之 WebSocket
  • java取消线程实例
  • Leetcode 27 Remove Element
  • Map集合、散列表、红黑树介绍
  • maya建模与骨骼动画快速实现人工鱼
  • php面试题 汇集2
  • Vue--数据传输
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 前端面试之CSS3新特性
  • 【干货分享】dos命令大全
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • ​LeetCode解法汇总518. 零钱兑换 II
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • (C语言)共用体union的用法举例
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (层次遍历)104. 二叉树的最大深度
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (附源码)计算机毕业设计高校学生选课系统
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • (转)Linq学习笔记
  • (转载)CentOS查看系统信息|CentOS查看命令
  • ******IT公司面试题汇总+优秀技术博客汇总
  • *p++,*(p++),*++p,(*p)++区别?
  • .net 反编译_.net反编译的相关问题
  • .NET 服务 ServiceController
  • .NET企业级应用架构设计系列之结尾篇
  • .Net下C#针对Excel开发控件汇总(ClosedXML,EPPlus,NPOI)