flask简单应用(1)

2019-06-19  本文已影响0人  清风徐来_简

一、 基本结构
二、另一种注册路由的方式
三、三种返回方式
四、设置请求方式
五、request中的数据

一、 flask_demo1 基本结构,六行实现 Hello World

from flask import Flask

app = Flask(__name__)  # __name__ 全局标识

'''
1,先执行 app.route('/')-->返回一个decorator
2,@decorator,形成一个闭包,且decorator执行时还可以用'/'这个参数
'''

@app.route('/')
def index():
    return 'Hello World!'

app.run(host='0.0.0.0', port=9527)

二、flask_demo2 另一种注册路由的方式

from flask import Flask

app = Flask(__name__)

def index():
    return 'Hello World'

app.add_url_rule('/',view_func=index)  # 写法1
# app.add_url_rule('/','index',index)  # 写法2

app.run()
app.add_url_rule.png

三、flask_demo3 三种返回方式

from flask import Flask, render_template, redirect

app = Flask(__name__)

@app.route('/')  # 路由必须加上斜杠 /,否则报错
def index():
    return '你好'

@app.route('/baidu')
def home():
    return redirect('https://www.baidu.com')
# 重定向其实就是在响应头中加了一个Location,浏览器见了响应头中有这个键值对,就会再次给这个url发送一次请求
# Location: https://www.baidu.com

@app.route('/tem')
def tem():
    return render_template('hehe.html') # 默认寻找同级目录的templates目录中的html文件

app.run()

四、flask_demo4 设置请求方式

from flask import Flask, request, render_template

app = Flask(__name__)

@app.route('/login', methods=('GET','POST'))  # 不写methods默认支持get,写上methods就按methods里的来,必须是可迭代(元组或列表)(源码中有规定)
def index():
    if request.method == 'POST':
        return '欢迎登陆'
    return render_template('login.html')

app.run()
设置methods.png

五、flask_demo5 request中的数据

from flask import Flask, request

app = Flask(__name__)

# 注意url写法,如果访问的url后面要加?参数,这个视图函数的url后就得加上斜杠/
@app.route('/test/', methods=('POST', 'GET'))
def test():
    met = request.method
    if met == 'POST':
        # 【1.url中带参数时,放进这里】
        print('args-->', request.args)  # args--> ImmutableMultiDict([('token', '12345')])

        # 【2.发送json数据时接收,放进这里】
        print('json-->', request.json)  # json--> {'name': 'zhangsan', 'age': 20}

        # 【3.前端发的数据格式未知时,放进这里】
        print('data-->', request.data)

        # 【4.form表单提交时,放进这里】
        print('form-->', request.form,type(request.form))
        # form--> ImmutableMultiDict([('name', 'ddddd'), ('age', '11')])
        # <class 'werkzeug.datastructures.ImmutableMultiDict'>

        print(request.form.get('name'))

        print(request.form.to_dict())  # {'name': 'ddddd', 'age': '11'}

        # 【5.本次请求的完整url】
        print('url-->', request.url)  # url--> http://127.0.0.1:5000/test/?token=12345

        # 【6.本次请求端口后的,参数前的路径】
        print('path-->', request.path)  # path--> /test/

    return '请看大屏幕'

app.run()

# 使用postmen测试
上一篇 下一篇

猜你喜欢

热点阅读