Flask web开发之路六
紧接着上篇文档,写模板继承和block,URL链接和加载静态文件
模板继承和block
项目结构
主app文件代码:
- from flask import Flask,render_template
- app = Flask(__name__)
- #class Person(object):
- #name = ''
- #age = 0
- #class Student(Person):
- #pass
- @app.route('/')
- def index():
- return render_template('index.html')
- @app.route('/login/')
- def login():
- return render_template('login.html')
- if __name__ == '__main__':
- app.run(debug=True)
base.html代码:
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>{% block title %}{% endblock %}</title>
- <style>
- .nav{
- background: #000000;
- height:100px;
- }
- ul{
- overflow:hidden;
- }
- ul li {
- float:left;
- list-style:none;
- padding:0 10px;
- line-height:65px;
- }
- }
- ul li a{
- color: #ffffff;
- }
- </style>
- </head>
- <body>
- <div class="nav">
- <ul>
- <li><a href="#">首页</a></li>
- <li><a href="#">发布问答</a></li>
- </ul>
- </div>
- {% block main %}{% endblock %}
- </body>
- </html>
index.html代码:
- {% extends 'base.html' %}
- {% block title %}
首页
{% endblock %}
- {% block main %} <hi>这是首页</hi> {% endblock %}
login.html代码:
- {% extends 'base.html' %}
- {% block title %}
登录
{% endblock %}- {% block main %}
- <hi>这是首页</hi>
- {% endblock %}
### 继承和block:
1. 继承作用和语法:
* 作用:可以把一些公共的代码放在父模板中,避免每个模板写同样的代码。
* 语法:
```
{% extends 'base.html' %}
```
2. block实现:
* 作用:可以让子模板实现一些自己的需求。父模板需要提前定义好。
* 注意点:字模板中的代码,必须放在block块中。
URL链接和加载静态文件
项目结构
主app文件代码:
- from flask import Flask,render_template
- app = Flask(__name__)
- @app.route('/')
- def index():
- return render_template('index.html')
- @app.route('/login/')
- def login():
- return render_template('login.html')
- if __name__ == '__main__':
- app.run(debug=True)
index.html代码;
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Title</title>
- <link rel="stylesheet" href="{{ url_for('static',filename='css/index.css') }}">
- <script src="{{ url_for('static',filename ='js/index.js') }}"></script>
- </head>
- <body>
- <a href="{{ url_for('login') }}">登录</a>
- <img src="{{ url_for('static',filename= 'images/zhuanli.jpg') }}" alt="">
- </body>
- </html>
login.html代码:
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Title</title>
- </head>
- <body>
- <h1>这是登录页面</h1>
- </body>
- </html>
CSS文件代码:
- a{
- background: red;
- }
### url链接:使用`url_for(视图函数名称)`可以反转成url。
### 加载静态文件:
1. 语法:`url_for('static',filename='路径')`
2. 静态文件,flask会从`static`文件夹中开始寻找,所以不需要再写`static`这个路径了。
3. 可以加载`css`文件,可以加载`js`文件,还有`image`文件。
```
第一个:加载css文件
<link rel="stylesheet" href="{{ url_for('static',filename='css/index.css') }}">
第二个:加载js文件
<script src="{{ url_for('static',filename='js/index.js') }}"></script>
第三个:加载图片文件
<img src="{{ url_for('static',filename='images/zhiliao.png') }}" alt="">
Flask web开发之路六的更多相关文章
- Flask web开发之路九
flask_scripts介绍 项目结构如下: flask_script_demo.py文件: from flask import Flask app = Flask(__name__) @app.r ...
- Flask web开发之路一
之前学过一段时间的flask,感觉还是挺好用的,自己的专利挖掘项目也想这个web框架来搭建,于是重新开始基础学习 环境:win10,python3.6,pycharm2017,虚拟环境virtuale ...
- Flask web开发之路十四
今天开始Flask的实战,创建一个项目,实现包括用户登录.注册.注销.发表博客.评论以及检索等功能 首先给出项目结构: 1.config.py文件: 存放各种配置信息 import os # dial ...
- Flask web开发之路十三
g对象 ### 保存全局变量的g属性:g:global1. g对象是专门用来保存用户的数据的.2. g对象在一次请求中的所有的代码的地方,都是可以使用的. 项目结构: g_demo.py文件代码: f ...
- Flask web开发之路十二
ge请求和post请求 ### get请求和post请求:1. get请求: * 使用场景:如果只对服务器获取数据,并没有对服务器产生任何影响,那么这时候使用get请求. * 传参:get请求传参是放 ...
- Flask web开发之路十一
首先写一下cookie和session的概念,然后是Flask中session的工作机制以及操作session ### cookie: 1. `cookie`出现的原因:在网站中,http请求是无状态 ...
- Flask web开发之路十
首先介绍循环引用的问题: 当一个模块需要引用另一个模块的类,而另一个模块又需要引用这个模块的类时,就出现了循环引用,而没法导入类,这时候可以切断其中一条引用路径,增加一个模块 项目结构: models ...
- Flask web开发之路八
今天写Flask_SQLAlchemy的外键及其关系 ### Flask-SQLAlchemy外键及其关系: 主app文件代码: from flask import Flask from flask_ ...
- Flask web开发之路七
今天写SQLAlchemy数据库 首先介绍ORM的概念: ORM,Object类,Relationship:关系,Mapping:映射,也就是模型关系映射 flask-sqlalchemy是一套ORM ...
随机推荐
- Android架构初探
#一 背景点评美团合并之后,业务需要整合,我们部门的几条业务需要往美团平台迁移,为了降低迁移成本,开发和维护成本,以及将来可能要做的单元测试,需要对架构进行相应的调整.之前的代码都堆在Activity ...
- Java通过JNI调用C++程序
JNI是Java Native Interface的缩写,中文为JAVA本地调用.使用JNI可以很方便的用我们的Java程序调用C/C++程序.很多时候,某些功能用Java无法实现,比如说涉及到底层驱 ...
- HDU 4666 Hyperspace (最远曼哈顿距离)
Hyperspace Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Tota ...
- java.lang.IllegalStateException——好头疼
在我东,下下来一个项目总会出现启动不了的问题,这些问题往往在编译的时候发现不了,当你的服务器启动的时候,就是一片片的报错,有些问题可以通过异常的提示信息,判断出来哪里配置错了,但是也有些情况下,从异常 ...
- Windows 不能复制文件到远程服务器的解决办法
1. 开始 -> 运行->浏览->C:\Windows\System32\rdpclip.exe->打开. 2. 打开资源管理器的进程可以看到 rdp复制粘贴正在运行,即可.
- Android studio ButterKnife插件
1.功能:给所有的有id的控件添加注解 2.github地址 https://github.com/avast/android-butterknife-zelezny 3.插件下载地址 http:// ...
- ORGANISING THE TEST CASES
ORGANISING THE TEST CASES -Test note of “Essential Software Test Design” 2015-09-24 目录 22.1 Test Cas ...
- (转)Windows系统白名单以及UAC机制
用户帐户控制 深入了解 Windows 7 用户帐户控制 Mark Russinovich 概览: 标准用户帐户 用户帐户控制 内容 UAC 技术 提升与恶意软件安全性 Windows 7 中的不 ...
- 用panels 制作drupal首页
1.下载zen主题 路径:https://www.drupal.org/project/zen2.“启用并设为默认”3.基于zen制作子主题 把zen目录下STARTERKIT文件夹,复制到sites ...
- Mysql系列三:Centos6下安装Mysql和Mysql主从复制的搭建
一.Centos6下安装Mysql 检测下系统有没有自带的mysql:yum list installed | grep mysql, 如果已经有的话执行命令yum -y remove mysql-l ...