1.创建一个虚拟环境并安装flask命令如下:
conda create -n flask python=3.8 flask==1.1.4 # 如果报错,执行以下步骤:
使用国内镜像源:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
# TUNA的help中镜像地址加有引号,需要去掉
conda config --set show_channel_urls yes
再执行第一步即可. 如果还报错,可以先创建虚拟环境,然后再在虚拟环境中安装flask即可.
conda 相关命令
conda activate <虚拟环境名称> # 进入/切换到指定名称的虚拟环境,如果不带任何参数,则默认回到全局环境base中。
conda deactivate # 退出虚拟环境
conda env list # 查看当前都有哪些虚拟环境
2. 创建项目目录
mkdir flaskdemo
3. 使用pycharm打开新建的项目目录,删除main.py文件,创建一个flask框架的启动文件。名字可以是app.py/run.py/main.py/index.py/manage.py/start.py
注意点!
与django不同,flask不会提供任何的自动操作,所以需要手动创建项目目录,需要手动创建启动项目的管理文件
例如,创建项目目录 flaskdemo,在目录中创建manage.py.在pycharm中打开项目并指定上面创建的虚拟环境
from flask import Flask app = Flask(__name__) @app.route('/') def index(): return 'Hello World' if __name__ == '__main__': app.run()
运行结果:
以上代码解析:
# 导入Flask类 from flask import Flask """ import_name Flask程序所在的包(模块),传 __name__ 就可以 其可以决定 Flask 在访问静态文件时查找的路径 static_path 静态文件访问路径(不推荐使用,使用 static_url_path 代替) static_url_path 静态文件访问路径,可以不传,默认为:/ + static_folder static_folder 静态文件存储的文件夹,可以不传,默认为 static template_folder 模板文件存储的文件夹,可以不传,默认为 templates """ app = Flask(import_name=__name__) # 编写路由视图 # flask的路由是通过给视图添加装饰器的方式进行编写的。当然也可以分离到另一个文件中。 # flask的视图函数,flask中默认允许通过return返回html格式数据给客户端。 @app.route('/') def index(): return "<h1>hello world</h1>" # 加载项目配置 class Config(object): # 开启调试模式 DEBUG = True # flask中支持多种配置方式,通过app.config来进行加载,我们会这里常用的是配置类 app.config.from_object( Config ) # 指定服务器IP和端口 if __name__ == '__main__': # 运行flask app.run(host="0.0.0.0", port=5000)
路由参数
路由的基本定义
路由和视图的名称必须全局唯一,不能出现重复,否则报错。
什么是路由?
路由就是一种映射关系。是绑定应用程序和URL地址的一种一对一的映射关系!我们在开发过程中,编写项目时所使用的路由往往是指代了框架/项目中用于完成路由功能的类,这个类一般就是路由类,简称路由。
url中可以传递路由参数, 2种方式
路由参数就是url路径的一部分。
任意路由参数接收
# 路由传递参数[没有限定类型] @app.route('/user/<user_id>') def user_info(user_id): return 'hello %s' % user_id
限定路由参数接收
限定路由参数的类型,flask系统自带转换器编写在werkzeug.routing.py文件中。底部可以看到以下字典:
DEFAULT_CONVERTERS = { "default": UnicodeConverter, "string": UnicodeConverter, "any": AnyConverter, "path": PathConverter, "int": IntegerConverter, "float": FloatConverter, "uuid": UUIDConverter, }
转换器名称 描述 string 默认类型,接受不带斜杠的任何文本 int 接受正整数 float 接受正浮点值 path 接收 string
但也接受斜线uuid 接受UUID(通用唯一识别码)字符串 xxxx-xxxx-xxxxx-xxxxx
from flask import Flask app = Flask(__name__) # 不限定类型传递路由参数 # @app.route("/collection/<collection_id>/<aritcle_id>") # def index(collection_id,aritcle_id): # return f"collection_id={collection_id}, aritcle_id={aritcle_id}" # 限定类型传递路由参数 # flask内置的所有路由转换器是由werkzeug.routing的DEFAULT_CONVERTERS字典进行配置的。 # flask的所有路由转换器,本质上就是路由经过正则来进行匹配获取参数值的。所有的路由转换器都必须直接或间接继承于BaseConverter路由转换器基类 @app.route("/sms/<int(min=10,max=100):mobile>") def sms(mobile): return f"mobile={mobile}" # 加载项目配置 class Config(object): DEBUG = True app.config.from_object(Config) if __name__ == '__main__': # flask运行过程中,所有的路由最终都会被注册到url_map里面。 print( app.url_map ) app.run(host="0.0.0.0",port=5000)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。