一、url_for
url_for 获取路由 可用于重定向
from flask import Flask, request, url_for
app = Flask('__name__')
@app.route('/')
def baidu():
print(url_for('article_list', aid=1, page=2))
# url_for 获取路由 传值:函数名,参数值(可多个 输出用 ?参数名1=参数值1&参数名2=参数值2)
return 'hello world'
@app.route('/article/<aid>') # 定义了的参数 需要传定义了的参数名 再进行传其他参数名
def article_list(aid):
return 'article list {}'.format(aid)
if __name__ == '__main__':
app.run(debug=True)
指定末尾斜杠
设置路由时,自己在末尾写了 ‘/’ 网页链接里可以写或不写;没有在末尾写’/'时 网页链接结束则不能写 可以用 path接收
二、HTTP的请求方式
最常用:get,post
from flask import Flask, request, url_for
app = Flask('__name__')
@app.route('/', methods=['GET', 'POST'])
# methods 默认传入 GET 且自行传入请求方法时 必须要传入 GET
def hello_world():
# print(request.args.get('name')) # get 方法
# print(request.form.get('name')) # post 方法 post 需要用软件 postman 设置参数
return 'hello world'
if __name__ == '__main__':
app.run(debug=True)
三、网页跳转和重定向
转发:a找b借钱 b找c借钱再借给a
重定向:a找b借钱 b让a去找c a再找c借钱
网页跳转:输入网页跳转到其他网页上 客户端不知道发生两次跳转 网页链接没变 一次请求
重定向:输入网页跳转到其他网页上 两次请求
from flask import Flask, request, redirect, url_for
app = Flask(__name__)
@app.route('/login')
def login():
return 'login'
@app.route('/profile/')
def profile():
name = request.args.get('name')
# 判断传入name值 输出name值 不传name值 重定向到 login函数里
if name:
return name
else:
return redirect(url_for('login'), code=301)
# 设置永久重定向 code = 301
if __name__ == '__main__':
app.run(debug=True)
四、response响应
from flask import Flask, request, redirect, url_for, Response, make_response
app = Flask(__name__)
@app.route('/about/')
def about():
# return 'cheney'
# return [1, 2, 3] # 不能返回列表
# return {"name": 'python'}
# return ('name', 'python')
# return ('python','JAVA') # 嵌套列表也不行
# return 'python', 400
return Response('python', status=200, mimetype='text/html') # 响应值 状态码
# return make_response('友情提示')
if __name__ == '__main__':
app.run(debug=True)
五、flask模板
render_template