【Flask】学习

目录

第一讲:修饰器、路由、端口

    1. 什么是 flask
    1. 修饰器、路由规则
    1. flask 变量规则,灵活传参数据类型:str、int、float(正浮点数,传int会报错)、path、uuid
    1. app.run(host='0.0.0.0') 中设置 host='0.0.0.0' ,让所有可以访问到本机 ip 的都可以使用。
    1. app.run(host='0.0.0.0',port=2333) ,通过 port 参数可以指定端口号

第二讲:Flask 重定向

    1. URL 重定向:总结一句话就是,在 app()中写路由的时候,末尾不加 /
    • 防止:代码中没有,网页中末尾有 / 的时候,会报错。
    1. Falsk HTTP 方法:get(查)、post(增)、put(改)、delete(删)
    1. 重定向:在访问期望网址的时候,跳转到了另外一个网站。

第三讲:POST尝试,并写json返回(jsonify)

    1. 尝试写 json 接口,并安装 Postman。
    1. Postman 一个模拟前端网页处理的软件。

第四讲:session(Cookies 不安全)

    1. Cookies 不安全
    1. Session 比 Cookies 安全,需要设置登录密钥
    • app.secret_key = 'asasasasasasa' # session 的加密
    • session['username'] = username # session 缓存内容
    • username = session.get("username") # 获取已经缓存的内容
    • session.clear() # 清除 session 缓存
    1. username = get_data.get('username') ### 是 小括号,对应某一个方法,不是 字典 的 中括号

第一讲

python 复制代码
### 安装: pip install flask

'''
第一讲:
    1. 什么是 flask
    2. 修饰器、路由规则
    3. flask 变量规则,灵活传参数据类型:str、int、float(正浮点数,传int会报错)、path、uuid
    4. app.run(host='0.0.0.0') 中设置 host='0.0.0.0' ,让所有可以访问到本机 ip 的都可以使用。
'''

from flask import Flask

app = Flask(__name__)

### @ 装饰器,以下一行内容为使用装饰器来处理路由
@app.route("/lyj") ### 路由,即 网址+端口号 的 /  之后添加对应的内容,才能够访问以下对应的程序
def hello_world():
    return "hello world."

################# 路由规则
### 体验 127.0.0.1:5000/  的 / 之后使用不同的内容
@app.route("/hey") ### 路由,即 网址+端口号 的 /  之后添加对应的内容,才能够访问以下对应的程序
def hey_music():
    return "hey 永杰."


### 灵活传参: str
@app.route("/get_str/<temp_str>")     ### <temp_name> 灵活传参的时候,默认为 字符串
def get_str(temp_str):
    return "get_str {} ".format( temp_str + temp_str )

############# flask 变脸规则
### 灵活传参数据类型:str、int、float(正浮点数)、path、uuid
@app.route("/get_int/<int:temp_num>")     ### 参数为 int 类型数据
def get_int(temp_num):
    return "get_int {} ".format( temp_num + temp_num  )

### 参数为 float 类型(正浮点数)数据。 500 不行,500.0 就可以
@app.route("/get_float/<float:temp_float>")
def get_float(temp_float):
    return "get_float {} ".format( temp_float + temp_float )

@app.route("/get_path/<path:temp_path>")     ### 参数为 path 类型数据, 类似于接收字符串
def get_path(temp_path):
    return "get_path {} ".format(  temp_path  )


### 通过此行内容,进行执行程序
app.run(host='0.0.0.0',port=2333) ### host='0.0.0.0' 表示任何主机都可以访问,不加的话 只有本机能够访问

第二讲:Flask 的重定向

python 复制代码
'''
第二讲:
    1. URL 重定向:总结一句话就是,在 app()中写路由的时候,末尾不加 /
        防止:代码中没有,网页中末尾有 / 的时候,会报错。
    2. Falsk HTTP 方法:get(查)、post(增)、put(改)、delete(删)
    3. 重定向:在访问期望网址的时候,跳转到了另外一个网站。
'''

from flask import Flask, abort, redirect

app = Flask(__name__)

@app.route('/baidu')    ### 跳转到 百度
def baidu():
    return redirect("https://www.baidu.com")

@app.route('/bilibili')    ### 跳转到 B 站
def bilibili():
    return redirect("https://www.bilibili.com")

app.run(host='0.0.0.0')

第三讲:尝试写 json 接口,并安装 Postman。

python 复制代码
'''
    尝试写 json 接口,并安装 Postman。
    Postman 一个模拟前端网页处理的软件。
        下载地址: https://www.postman.com

'''
from flask import request, jsonify,Flask

app = Flask(__name__)

@app.route('/test/first_post', methods=['POST'])
def first_post():
    try:
        my_json = request.get_json()
        print(my_json)
        name = my_json.get("name")
        age = my_json.get("age")

        if not all([name, age]):
            return jsonify(msg="缺少参数")

        age += 10

        return jsonify(name=name, age=age)  ### 使得结果,以 json 格式进行返回

    except Exception as e:
        return jsonify(msg="程序出错, 清查询输入是否正确 .")

app.run(host='0.0.0.0')

第四讲:session 会话

  • Cookies 不安全
python 复制代码
'''
第四讲:
    1. Cookies 不安全
    2. Session 比 Cookies 安全,需要设置登录密钥
        app.secret_key = 'asasasasasasa'    # session 的加密
        session['username'] = username      # session 缓存内容
        username = session.get("username")  # 获取已经缓存的内容
        session.clear()                     # 清除 session 缓存
    3. username = get_data.get('username')     ### 是 小括号,对应某一个方法,不是 字典 的 中括号
'''
from flask import Flask, request, jsonify, session

app = Flask(__name__)
app.secret_key = 'asasasasasasa'    # session 的加密


### 登录
@app.route("/try/login", methods=['POST'])
def login():
    '''
    账户:username  asd123
    密码:password  asdasd
    Returns:
    '''
    get_data = request.get_json()
    username = get_data.get('username')     ### 是 小括号,对应某一个方法,不是 字典 的 中括号
    password = get_data.get('password')

    ### 完整性检查
    if not all([username, password]):
        return jsonify(msg="参数不完整")

    ### 账户、密码,是否正确
    if username=='asd123' and password=='asdasd':
        # 如果登录验证通过,保存登录状态在 Session 中
        session['username'] = username
        return jsonify(msg="登录成功")
    else:
        return jsonify(msg="用户名或密码错误")


### 检查登录
@app.route("/session", methods=["GET"])
def check_session():
    username = session.get("username")
    if username is not None:
        ### 可以在此添加,操作数据库的代码
        # 从数据库里,查询一些信息,比如: 头像、登记、金币数量
        return jsonify(username=username, msg='当前登录账户 {}'.format(username))
    else:
        return jsonify(msg="出错了,暂无账户登录.")

### 退出登录
@app.route("/try/logout", methods=["GET"])
def logout():
    session.clear()
    return jsonify(msg="账号退出成功!")

app.run(host='0.0.0.0')
相关推荐
qq_4588421517 分钟前
基于SaaS平台的iHRM管理系统测试学习
python·学习·postman
apocelipes24 分钟前
随机数漫谈
linux·数据结构·python·算法·golang·linux编程
hycccccch34 分钟前
Java&MySQL 学习(基础)
java·开发语言·笔记·学习·mysql
交换喜悲1 小时前
深度学习之半监督学习:一文梳理目标检测中的半监督学习策略
论文阅读·人工智能·python·学习·目标检测·计算机视觉·目标跟踪
Learning改变世界1 小时前
Shell代码解读
python·shell
爱看书的小沐1 小时前
【小沐学AI】Python实现语音识别(faster-whisper-webui)
人工智能·python·ai·nlp·whisper·语音识别·fast-whisper
白色的风扇1 小时前
web的学习和开发
学习
啊取名真困难1 小时前
TG群发机器人:高效自动化消息分发指南
python·机器人·自动化
無间行者2 小时前
Go语言学习:每日一练2
开发语言·学习·golang
白色的生活2 小时前
设计模式学习-《策略模式》
学习·设计模式·策略模式