1.准备工作
创建虚拟环境:

conda create -n 环境名 

管理虚拟环境:

# 查看所有虚拟环境
conda env list
# 删除虚拟环境
conda env remove -n 环境名

# 进入虚拟环境
conda activate 环境名
# 退出虚拟环境
conda deactivate

设置pip源:(将pip源设置为国内,可以加快下载速度)

pip config set global.index-url 【pip源】
# 清华大学镜像源
https://pypi.tuna.tsinghua.edu.cn/simple/
# 阿里云镜像源
http://mirrors.aliyun.com/pypi/simple/
# 豆瓣镜像源
http://pypi.douban.com/simple/
# 百度镜像源
https://mirror.baidu.com/pypi/simple

注意:如果不设置pip源,同时需要下载速度要快,需要在下载命令行后加 -i pip源,例如:
pip install flask[async]==3.1.2 watchdog==6.0.0 -i https://pypi.tuna.tsinghua.edu.cn/simple/

开发工具:PyCharm、MySQL(MySQL :: Download MySQL Installer)、Navicat(Navicat | 免费下载 Navicat Premium Lite)

2.Flask
Flask是一款Python Web框架,适合快速开发 Web 应用。
使用Pro版的Pycharm后,新建项目的左侧选择Flask,之后选择自定义环境,并选择你正确的环境路径,最后创建项目。
新建完成后,在项目名称的文件夹下面有三个文件:static、templates和app.py,其中static保存的是静态文件、templates保存的的是模板、app.py是所有文件的入口。

以下是app.py的模板:

# 1.导入Flask类
from flask import Flask

# 2.创建Flask对象,传入__name__
# 作用:确定项目根路径,确定templates和static路径
app = Flask(__name__)

# 3.创建一个根路由,当访问:http://127.0.0.1:5000 时会访问这个路由
@app.route('/')  # 装饰器,URL
def hello_world():  # put application's code here,视图函数
    # 返回Hello World!,在浏览器中会看到这个输入
    return 'Hello World!'

# 4.如果当前文件作为项目入口文件,那么__name__==__main__
if __name__ == '__main__':
    # 运行Flask实例对象
    app.run()

3.项目配置

debug模式:在Flask项目中,开启debug之后,如果代码发生修改,只需要按ctrl+s键后,就能重新加载项目,无需结束本次运行。并且如果程序中出现错误,会在浏览器或控制台显示,方便查看。具体怎么开启debug,可以询问AI。
如果没有使用Pro版本,可以修改app.run()为app.run(debug=True)。

host和port:如http://127.0.0.1:5000网站中,http://127.0.0.1是host主机,5000是port端口,可以修改主机和端口,具体如何修改,可以询问AI。
同样如果没有使用Pro版本,可以修改app.run()为app.run(port=5050,host='0.0.0.0')。

其他修改配置:可以通过app.config来配置,类似于字典,并且所有配置都是大写。当然,如果项目越来越复杂,使用app.config会冗余,可以通过文件的形式来配置,比如写config.py,再写一些配置项。使用时,app.py中需要导入config.py文件。

4.URL和视图
URL:一个网站通常有很多个URL,有的URL没有参数,有的URL有参数。

定义无参URL:需要通过@app.route即可定义。

@app.route('/profile')
def profile():
    return '这是个人中心。'
# 访问网站:http://127.0.0.1:5000/profile

定义有参URL:有两种形式。以博客为例:
定义为/blog/<blog_id>,那么访问的就是/blog/123,那么就可以将参数blog_id=123传递给视图函数,这种形式称为path传参数。

# 定义path参数
@app.route('/blog/<int:blog_id>')  # blog_id默认是字符串
def blog_detail(blog_id):
    return f"获取得到的博客ID为:{blog_id}"

由上述代码可知,参数定义通过语法:<类型:参数名>的形式传递,其中类型默认是字符串,如果设置成其他类型,在参数解析的时候就会转换为对应的类型,如果转换失败就会抛出404的错误。其中类型包括以下:
int:整型
string:字符型,默认类型
float:浮点型
path:路径,类似于string
uuid:UUID类型
any:备选值中任意一个

定义为/blog,与无参数URL一样。那么访问的就是/blog?blog_id=123,那么就可以将参数blog_id=123传递给视图函数,这种形式称为query string传参。其中,获取参数通过request.args.get("参数名称")来获取参数。如果需要多个参数,通过&来连接。

# 多参数
from flask import request
@app.route('/blog/list')
def blog_list():
    # 获取名为page的参数,如果没有传递这个参数,那么默认值为1
    # 并且可以通过参数type指定该page类型为整型,那么获取的参数就会被转换为int类型
    # 否则都是字符串类型
    page = request.args.get('page',1,type=int)
    size = request.args.get('size',10,type=int)
    return f"页码:{page},size:{size}"
# 访问网站:127.0.0.1:5000/blog/list?page=2&size=5,页码:2,size:5
# 访问网站:127.0.0.1:5000/blog/list,页码:1,size:10

5.请求方法
http限制方法:在定义URL的时候,不同的操作应该使用不同的方法。从服务器获取数据用get请求,提交数据到服务器用post请求,修改服务器数据用put请求,删除服务器数据用delete请求。

@app.route('/blog/add',methods=['POST'])
def add_blog():
    return "博客添加成功!"

上述代码限制了post请求,若使用get请求,则flask就会返回405 (METHOD NOT ALLOWED)的错误。

快捷路由装饰器 描述
@app.get('/path')
等价于 @app.route('/path', methods=['GET'])
@app.post('/path')
等价于 @app.route('/path', methods=['POST'])
@app.put('/path')
等价于 @app.route('/path', methods=['PUT'])
@app.delete('/path')
等价于 @app.route('/path', methods=['DELETE'])

6.页面重定向
页面和重定向,简称重定向,体现会浏览器会从一个页面跳转到另一个页面。重定向分为永久性重定向和暂时性重定向。
永久性重定向:http状态码是301,常用于旧地址被废弃,要跳转到一个新的网站确保用户能正常访问。
暂时性重定向:http状态码是302,表示暂时性的跳转到另一个网站。
在Flask中,重定向是通过flask.redirect(location,code=302)函数来实现,location表示需要重定向到哪个URL,code表示状态码,默认是302,表示页面的暂时性跳转。

@app.get("/pub")
def pub():
    name=request.args.get("name")
    if name is None:   # http://127.0.0.1:5000/pub
        return redirect("login")
    else:
        return "发布页面!"   # http://127.0.0.1:5000/pub?name=123
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐