Flask框架(1)-程序基本结构
1. 安装Flask
1.1 安装虚拟环境
mkdir myproject
cd myproject
py -3 -m venv venv
#Linux系统: python3 -m venv venv
1.2 激活虚拟环境
venv\Scripts\activate
#Linux中: . venv/bin/activate
1.3 安装Flask
(venv) D:\Tmp\myproject>pip install Flask
2. 第一个Flask程序
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return 'hello world'
if __name__ == '__main__':
app.run()
初始化:app = Flask(__name__)
Flask类只需要有个构造参数即主模块或包的名字,这个参数决定程序的根目录,以便找到相对于根目录的资源文件,这个大部分情况__name__就是所需要的值。
路由:@app.route('/')
处理函数和和URL的关系,Flask通过修饰器把函数注册为路由。访问http://localhost:5000就会调用index这个视图函数
访问:http://127.0.0.1:5000,页面即可得到hello world.
默认只能本机访问,可以修改端口和允许的主机:app.run(host = '0.0.0.0',port = 7777,debug = True )
3.上下文
Flask有程序上下文和请求两种上下文,Flask使用上下文把一些对象设置为在一个线程内全局可访问。

Flask在分发请求之前,激活或者说推送程序和请求上下文,请求处理完后进行删除。注意一定要激活才可以使用上下文。

4. 请求调度
查看URL和处理函数的映射关系:

这里有一个特殊的映射关系/static/<filename>,这是Flask添加的特殊路由,用于访问静态文件。url_for('static', username='js/test.js')
from flask import Flask, url_for
app = Flask(__name__)
@app.route('/')
def index():
return 'index'
@app.route('/login')
def login():
return 'login'
@app.route('/user/<username>')
def profile(username):
return '{}\'s profile'.format(username)
with app.test_request_context():
print(url_for('index'))
print(url_for('login'))
print(url_for('login', next='/'))
print(url_for('profile', username='John Doe'))
/
/login
/login?next=/
/user/John%20Doe
5. 请求钩子
钩子用于处理请求之前或者之后,比如说请求开始前建立数据库连接,Flask支持下面四种钩子:

6. 响应
6.1 响应状态码
@app.route('/')
def index():
return '<h1>Hello World!</h1>',400
6.2 返回respones对象
@app.route('/')
def index():
response = app.make_response('<h1>This document carries a cookie</h1>')
response.set_cookie('name', 'scott')
return response
6.3 重定向
from flask import redirect
app = Flask(__name__) @app.route('/')
def red():
return redirect('https://www.baidu.com')
6.4 abort函数处理错误
@app.route('/login')
def login():
abort(401)
this_is_never_executed()
7. 渲染模板
从Python内部生成HTML并不好玩,而且实际上非常麻烦,因为您必须自行执行HTML转义以保持应用程序的安全。因为Flask 自动为你配置Jinja2模板引擎。
要呈现模板,您可以使用该render_template() 方法。您所要做的就是提供模板的名称以及想要作为关键字参数传递给模板引擎的变量。以下是如何呈现模板的简单示例:
from flask import render_template
@app.route('/hello/')
@app.route('/hello/<name>')
def hello(name=None):
return render_template('hello.html', name=name)
8. HTTP方法
根据不同的请求方法,执行不同的方法。
from flask import request
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
return do_the_login()
else:
return show_the_login_form()
9. request
@app.route('/login', methods=['POST', 'GET'])
def login():
error = None
if request.method == 'POST':
if valid_login(request.form['username'],
request.form['password']):
return log_the_user_in(request.form['username'])
else:
error = 'Invalid username/password'
# the code below is executed if the request method
# was GET or the credentials were invalid
return render_template('login.html', error=error)
要访问在URL(?key=value)中提交的参数,您可以使用 args属性:
searchword = request.args.get('key', '')
10. 文件上传
from flask import request
from werkzeug.utils import secure_filename @app.route('/upload', methods=['GET', 'POST'])
def upload_file():
if request.method == 'POST':
f = request.files['the_file']
#尽可能以原名字命名,中文会被去掉
f.save('/var/www/uploads/' + secure_filename(f.filename))
Flask框架(1)-程序基本结构的更多相关文章
- Python——Flask框架——程序的结构
一.项目结构 |-flasky |-app Flask程序一般都保存在这里 |-templates/ |-static/ |main/ |-__init__.py |-errors.py |-form ...
- flask框架的教程--程序的基本结构[二]
一个简单的程序 from flask import Flask # 实例化app 对象 app = Flask(__name__) @app.route('/') def index(): retur ...
- 基于Flask框架的Python web程序的开发实战 <二> 项目组织结构
看到第七章-大型程序的结构,备受打击,搞不清工厂函数.蓝本.单元测试,不理解这些对象/变量怎么传递的,感觉好乱,虽然按照源码都照抄了,还是不理解.... 缓缓先.... 本来网上的Flask的教程就比 ...
- python flask框架学习(二)——第一个flask程序
第一个flask程序 学习自:知了课堂Python Flask框架——全栈开发 1.用pycharm新建一个flask项目 2.运行程序 from flask import Flask # 创建一个F ...
- 基于Flask框架的Python web程序的开发实战 <一> 环境搭建
最近在看<Flask Web开发基于Python的Web应用开发实战>Miguel Grinberg著.安道译 这本书,一步步跟着学习Flask框架的应用,这里做一下笔记 电脑只安装一个P ...
- 2nd_SE-结对编程1-基于flask框架的四则运算生成器
0x00 Coding https://coding.net/u/nikochan/p/2nd_SE/git 0x01 写在前面 因为在上一个作业中,是基于python完成的Command程序.那么再 ...
- Flask框架搭建一个日程表
目录 前言 项目介绍 技术栈 Flask Web开发流程 一.搭建环境 1.1: 创建虚拟环境 1.2: 安装依赖包 1.3: 创建依赖包列表文件 1.4: 测试hello word 二.应用程序开发 ...
- Python——Flask框架
Flask框架相关知识构架 程序的基本结构 模板 Web表单 数据库 电子邮件 程序的结构 用户认证
- flask框架下的jinja2模板引擎(1)(模板渲染)
#转载请留言联系 模板是什么? 在 flask 框架中,视图函数有两个作用:处理业务逻辑和返回响应内容.在大型应用中,把业务逻辑和表现内容放在一起,会增加代码的复杂度和维护成本.模板作用即是承担视图函 ...
- Flask框架的学习与实战(二):实战小项目
昨天写了一篇flask开发环境搭建,今天继续,进行一个实战小项目-blog系统. blog系统很简单,只有一个页面,然而麻雀虽小五脏俱全.这里目的不是为了做项目而做项目,这篇文章本意是通过这次练习传达 ...
随机推荐
- Android中Local Service最本质的作用是什么?
把Service等同于thread或process是一个非常常见的误解.需要强调又强调的第一点是,Android的Service是一个Context,并不必然等于一个额外的thread.如果你有仔细看 ...
- PID控制器(比例-积分-微分控制器)- V
Linear Actuator - PID Control Introduction This application guide is designed to explain the basics ...
- 删除weblogic应用缓存,weblogic 缓存的删除方法
security (注意:security目录下为安全认证文件,切不可删除!) 正常情况下只需删除tmp目录下缓存文件(不同的工程在tmp下面有不同的路径,如果不清楚的话可以一起删除). 个别情况下会 ...
- UVA11137 Ingenuous Cubrency 完全背包 递推式子
做数论都做傻了,这道题目 有推荐,当时的分类放在了递推里面,然后我就不停的去推啊推啊,后来推出来了,可是小一点的数 输出答案都没问题,大一点的数 输出答案就是错的,实在是不知道为什么,后来又不停的看, ...
- VS2010环境下Winpcap配置方法 (转)
VS2010 配置Winpcap 新建一个项目,GetDevs.cpp.用来测试.测试代码最后有给出. View->Property Manager Debug|Win32 -> Mirc ...
- WIN10平板如何打开文件夹选项
打开计算机,然后查看,最后可以找到选项
- oracle decode()函数的参数原来可以为sql语句!
1.情景展示 判断某个字段的值,如果以APP开头,需查询APP表里对应的数据:如果是以JG开头,就查询机构对应的表. 2.原因分析 如果使用CASE WHEN THEN或者IF ELSIF 太麻烦 ...
- hihocoder第238周:杨氏矩阵的个数
题目链接 问题描述 给定一个N行M列的矩阵,往里面填入$1-N\times M$个数字,使得这个矩阵每行.每列都满足递增.问:有多少种填法? 问题分析 这个问题很难,如果能够直接想到,那就是天才了. ...
- 小型IT部门建设之我见
关于IT团队建设,一般的原则是四大块组成: 1:业务分析师,对接业务部门,把业务需求转变成技术需求 专注于BRS( Business Requirement Speci ...
- qeephp 记录下
百度百科: https://baike.baidu.com/item/qeephp/8328612?fr=aladdin 官方地址: http://www.qeephp.cn/app/index.ph ...