1)启动一个flask框架程序,客户端输出helloworld
from wsgiref.simple_server import make_server
# hello_world是回调函数,参数必须是这样
def hello_world(environ, start_response):
status = "200 OK"
response_headers = [('Content-Type', 'text/html')]
start_response(status, response_headers)
path = environ['PATH_INFO'][1:] or 'hello world'
return [b'<h1> %s </h1>' % path.encode()]
def main():
server = make_server('localhost', 8001, hello_world)
print('server http on port 8001 running...')
server.serve_forever()
if __name__ == '__main__':
main()
2)两种回调函数编写
from flask import Flask
app = Flask(__name__)
# 方法1
# @app.route('/')
# def hello():
# return 'hello world'
# 方法2
def hello2():
return 'hello world222'
app.add_url_rule('/hello', view_func=hello2)
if __name__ == '__main__':
app.run()
3)动态构建URL,包括使用url_for和redirect两个模块的使用
根据客户端输入的信息,网页实现跳转
from flask import Flask
from flask import redirect, url_for
app = Flask(__name__)
@app.route('/admin')
def hello_admin():
return 'Hello: admin'
@app.route('/guest/<guest>')
def hello_guest(guest):
return f'Hello guest:{guest} '
@app.route('/user/<name>')
def hello_user(name):
if name == 'admin':
return redirect(url_for('hello_admin'))
else:
return redirect(url_for('hello_guest', guest=name))
if __name__ == '__main__':
app.run()
4)post请求应用案例(表单提交)
注意:表单必须写在templates这个文件夹里面,而且这个temlpates是必须这样写
from flask import Flask
from flask import redirect, url_for, request, render_template
app = Flask(__name__)
@app.route("/")
def index():
return render_template('login.html')
@app.route('/welcome/<name>')
def do_welcome(name):
return f'欢迎 {name}'
@app.route('/login', methods=['POST'])
def login():
if request.method == 'POST':
user = request.form['nm']
return redirect(url_for('do_welcome', name=user))
if __name__ == '__main__':
app.run()
4.2)相关的表单login.html文件如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="http://127.0.0.1:5000/login" method="post">
<p>输入姓名:</p>
<p><input type="text" name="nm"/></p>
<p><input type="submit" value="提交"/></p>
</form>
</body>
</html>