【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')
相关推荐
鸿业远图科技4 分钟前
分式注记种表达方式arcgis
python·arcgis
是孑然呀29 分钟前
【小记】word批量生成准考证
笔记·学习·excel
别让别人觉得你做不到1 小时前
Python(1) 做一个随机数的游戏
python
小彭律师2 小时前
人脸识别门禁系统技术文档
python
ll7788113 小时前
C++学习之路,从0到精通的征途:继承
开发语言·数据结构·c++·学习·算法
张小九994 小时前
PyTorch的dataloader制作自定义数据集
人工智能·pytorch·python
zstar-_4 小时前
FreeTex v0.2.0:功能升级/支持Mac
人工智能·python·macos·llm
LuckyLay4 小时前
React百日学习计划——Deepseek版
前端·学习·react.js
苏生要努力4 小时前
第九届御网杯网络安全大赛初赛WP
linux·python·网络安全
于壮士hoho4 小时前
DeepSeek | AI需求分析
人工智能·python·ai·需求分析·dash