Python_Flask_学习笔记

官方完整文档

快速入门

学习小结

最小应用

1
2
3
4
5
6
7
8
9
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run()

run() 参数

1
app.run(host='0.0.0.0',port=80,debug=True)
  • host : 0.0.0.0 监听所有公开IP
  • port : 监听的端口,默认为5000
  • debug : debug 模式,修改代码后会自动重启,上线服务不推荐这样做

路由

简单的来说就是访问你服务器的地址

比如

/admin /login /phpMyadmin

/ 的问题

访问的时候只能少,不能多

1
2
3
4
5
6
7
@app.route('/projects/')
def projects():
return 'The project page'
@app.route('/about')
def about():
return 'The about page'

可以访问 /projects

但是不能访问 /about/,会抛出404异常

URL 的构造

  • 使用 flask 自带的 url_for
  • 使用前需要先从flask模块导入(from flask import url_for)

小例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from flask import Flask,url_for
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
@app.route('/welcome/<name>')
def welcome():
return str(url_for('hello_world'))
@app.route('/about')
def about():
return 'The about page'
@app.route('/test')
def test():
print (url_for('hello_world'))
print (url_for('about',abc='123'))
print (url_for('welcome',name='123'))
return 'test'
if __name__ == '__main__':
app.run(host='127.0.0.1',port=80,debug=True)
1
2
3
/
/about?abc=123
/welcome/123

注意

  • url_for 的参数是已经创建的方法名
  • url_for 中的方法名需要用引号引起来

HTTP 方法

默认只允许 GET 请求

如果要允许其他请求方法,那么则需要通过装饰器提供的 methods 参数来改变

一个小例子

1
2
3
4
5
6
7
8
9
from flask import Flask,url_for,request
app = Flask(__name__)
@app.route('/',methods=['POST','GET'])
def index():
return request.method
if __name__ == '__main__':
app.run(host='127.0.0.1',port=80,debug=True)

常见 HTTP 方法

  • GET
  • HEAD
  • POST
  • PUT
  • DELETE
  • OPTIONS

渲染模板

说简单点就是一个 html 的页面

还是需要先引入render_template 这个模块

from flask import render_template

然后在当前目录创建 templates 文件夹,并将 html 文件放入改文件夹中

参考

静态文件处理

CSSJavaScipt 文件的自动处理

  • 1.创建 static 文件夹
  • 2.将静态文件放进 static
  • 3.修改html中的css js 的路径为 /static/xxx.js

接收请求数据

引入

from flask impoort request

小例子

1
2
3
4
5
6
7
8
9
10
11
from flask import Flask,request
app = Flask(__name__)
@app.route('/',methods=['POST','GET'])
def index():
return str(request.form)
#return str(request.headers)
if __name__ == '__main__':
app.run(host='127.0.0.1',port=80,debug=True)

formargs 返回值是字典格式的

request请求对象 总结

1
2
3
4
5
6
path # 请求的 url
method # 请求方法
form # post过来的数据
args # get 过来的数据
json # post 过来的json数据
header # 查看请求头

文件上传

确保在你的 HTML 表单中不要忘记设置属性 enctype="multipart/form-data", 否则浏览器将不传送文件。

1
2
3
4
5
6
7
from flask import request
@app.route('/upload', methods=['GET', 'POST'])
def upload_file():
if request.method == 'POST':
f = request.files['the_file']
f.save('/var/www/uploads/uploaded_file.txt')

重定向

你能够用 redirect() 函数重定向用户到其它地方。能够用 abort() 函数提前中断一个请求并带有一个错误代码

  • redirect 重定向到一个url上
  • abort 自定义出错状态码,并且直接中断,不运行后面的
1
2
3
4
5
6
7
8
9
10
11
12
13
14
from flask import Flask,url_for,redirect,abort
app = Flask(__name__)
@app.route('/',methods=['POST','GET'])
def hello_world():
abort(404)
return redirect(url_for('test'))
@app.route('/test')
def test():
return 'hello'
if __name__ == '__main__':
app.run(host='127.0.0.1',port=80,debug=True)

错误页面

使用 errorhandler() 装饰器

  • 创建的方法中应该含有一个 error 参数,用于确认到底是哪种出错
  • return 后面的数字就表示返回的状态码,如果是405就改成405
1
2
3
4
5
6
7
8
9
10
11
12
13
14
from flask import Flask,url_for,redirect,abort
app = Flask(__name__)
@app.route('/',methods=['POST','GET'])
def hello_world():
abort(404)
@app.errorhandler(404)
def page_404(error):
return (error)
#return '<h1>404 NOT FOUND</h1>',404
if __name__ == '__main__':
app.run(host='127.0.0.1',port=80,debug=True)

END

Powered by Hexo and Hexo-theme-hiker

Copyright © 2017 - 2018 Damit5's Blog All Rights Reserved.

UV : | PV :