flask 视图基础和url
FLASK介绍
一、Flask是一个用Python编写的Web应用程序框架。 它由 Armin Ronacher 开发,他领导一个名为Pocco的国际Python爱好者团队。 Flask基于Werkzeug WSGI工具包和Jinja2模板引擎。两者都是Pocco项目。
Web Server Gateway Interface(Web服务器网关接口,WSGI)已被用作Python Web应用程序开发的标准。 WSGI是Web服务器和Web应用程序之间通用接口的规范。
Werkzeug它是一个WSGI工具包,它实现了请求,响应对象和实用函数。 这使得能够在其上构建web框架。 Flask框架使用Werkzeug作为其基础之一。
jinja2是Python的一个流行的模板引擎。Web模板系统将模板与特定数据源组合以呈现动态网页。
Flask通常被称为微框架。 它旨在保持应用程序的核心简单且可扩展。Flask没有用于数据库处理的内置抽象层,也没有形成验证支持。相反,Flask支持扩展以向应用程序添加此类功能。
学习链接可以参照:https://www.w3cschool.cn/flask/flask_overview.html
二、url 与函数映射
from flask import Flask,request,render_template
app = Flask(__name__)
#http://127.0.0.1:5001/test/?uname=zhangsan&pwd=123456
@app.route('/test/')
def hello():
if request.method =="GET":
uname = request.args.get("uname")
pwd = request.args.get("pwd")
return "请求的参数是%s,%s" % (uname,pwd)
elif request.method=="POST":
uname = request.form.get("uname")
pwd = request.form.get("pwd")
return "提交的参数是%s,%s" % (uname,pwd)
@app.route('/test/',methods=["POST","GET"])
def hello1():
if request.method =="GET":
uname = request.args.get("uname")
pwd = request.args.get("pwd")
return render_template("login.html")
elif request.method=="POST":
uname = request.form.get("uname")
pwd = request.form.get("pwd")
return "提交的参数是%s,%s" % (uname,pwd)
if __name__ == '__main__':
app.run(port = 5001)
login.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h4>登录页面</h4>
<form action="/test/" method="post">
用户名:<input type="text" name="uname"></br>
密 码:<input type="text" name="pwd"></br>
<input type="submit" value="提交">
</form>
</body>
</html>
三、url_for函数使用
from flask import Flask,request,url_for
'''
1.使用url_for函数构建url
(1)路径修改的概率高于函数
(2)ulr_for 接收两个以上参数第一个参数为函数名,第二个参数为url规则的命名参数,其余参数为可变参数
'''
app = Flask(__name__)
@app.route('/')
def hello():
#num=1,pwd=123456为可变参数,根据需要填写
return url_for("url",page=4,num=1,pwd=123456)
@app.route('/url/<page>/')
def url(page):
print("路径函数")
if __name__ == '__main__':
app.run(port = 5002)
四、页面跳转和重定向
from flask import Flask,render_template,redirect,request,url_for
'''
重定向:永久重定向302和暂时性重定向301
'''
app = Flask(__name__)
@app.route("/login")
def login():
return render_template("login.html")
@app.route("/priviledge")
def privelege():
uname = request.args.get("uname")
#如果个人信息存在,返回个人信息即可
if uname and uname == "zhangsan":
return "这是个人中心"
#若果没有登录则重定向到登录首页
else:
return redirect(url_for("login"),code=302)
if __name__ == "__main__":
app.run(port=5003)
五、视图函数response
from flask import Flask,request,url_for,render_template,Response
app = Flask(__name__)
'''
视图函数可以返回以下类型的值
1.Response 对象及其子类对象
2.字符串
3.元组
'''
@app.route('/')
def hello():
#返回元组,元组的格式响应体、状态码、头部,不必须按要写三个
#return ("张三",200)
#返回字符串
#return "<html>字符串</html>"
#返回【response对象及其子类对象】类型的数据
resp = Response("返回的是一个Response对象",202)
return resp
if __name__ == '__main__':
app.run(port = 5004)