国际网站建设标准,做网站需要用到哪些编程知识,爬取旅游网站数据并进行分析,开网店怎么卖到外国flask加载项目配置的二种方式
# 1. 导入flask核心类
from flask import Flask# 2. 初始化web应用程序的实例对象
app Flask(__name__)第一种#xff1a;flask项目加载站点配置的方式
# app.config[配置项] 配置项值
# app…flask加载项目配置的二种方式
# 1. 导入flask核心类
from flask import Flask# 2. 初始化web应用程序的实例对象
app Flask(__name__)第一种flask项目加载站点配置的方式
# app.config[配置项] 配置项值
# app.config[DEBUG] False第二种flask项目加载站点配置的方式
# app.config是整个flask项目默认的配置属性里面包含了所有的可用配置项配置项的属性名都是大写字母或大小字母下划线组成
config {DEBUG: True
}
app.config.update(config)# 4. 可以通过实例对象app提供的route路由装饰器绑定视图与uri地址的关系
app.route(/)
def index():# 5. 默认flask支持函数式视图视图的函数名不能重复否则报错# 视图的返回值将被flask包装成响应对象的HTML文档内容返回给客户端。return h1hello flask/h1if __name__ __main__:# 3. 运行flask提供的测试web服务器程序app.run(host0.0.0.0, port5000)路由的基本定义
路由和视图的名称必须全局唯一不能出现重复否则报错。
# 1. 导入flask核心类
from flask import Flask# 2. 初始化web应用程序的实例对象
app Flask(__name__)# 开启debug模式
app.config[DEBUG] True# 参数1rule设置当前视图的路由地址
# 惨呼2methods设置当前视图的HTTP请求方法允许一个或多个方法不区分大小写
app.route(rule/, methods[get, post])
def index():return h1hello flask1/h1if __name__ __main__:# 3. 运行flask提供的测试web服务器程序app.run(host0.0.0.0, port5000)
什么是路由
路由就是一种映射关系。是绑定应用程序视图和url地址的一种一对一的映射关系我们在开发过程中编写项目时所使用的路由往往是指代了框架/项目中用于完成路由功能的类这个类一般就是路由类简称路由。
flask中url可以传递路由参数有2种方式
路由参数就是url路径的一部分。
接收任意路由参数
# 1. 导入flask核心类
from flask import Flask# 2. 初始化web应用程序的实例对象
app Flask(__name__)# 开启debug模式
app.config[DEBUG] Trueapp.route(rule/, methods[get, post])
def index():return h1hello flask1/h1
路由参数的传递
小括号圈住里面写上参数变量名
在视图中即可通过参数列表按命名来接收
接收参数时如果没有在设置路由中设置参数的类型则默认参数类型为字符串类型app.route(/goods/cid/gid)
def goods(gid, cid):print(gid, type(gid))print(cid, type(cid))return f显示cid{cid},gid{gid}的商品信息if __name__ __main__:# 3. 运行flask提供的测试web服务器程序app.run(host0.0.0.0, port5000)接收限定类型参数
限定路由参数的类型flask系统自带转换器编写在werkzeug/routing/converters.py文件中。底部可以看到以下字典
# converters用于对路由中的参数进行格式转换与类型限定的
DEFAULT_CONVERTERS: t.Mapping[str, t.Type[BaseConverter]] {default: UnicodeConverter, # 默认类型也就是stringstring: UnicodeConverter, # 字符串不包含 /any: AnyConverter, # 任意类型path: PathConverter, # 也是字符串但是包含了 /int: IntegerConverter,float: FloatConverter,uuid: UUIDConverter,
}系统自带的转换器具体使用方式在每种转换器的注释代码中有写请留意每种转换器初始化的参数。
转换器名称描述string默认类型接受不带斜杠的任何文本int接受正整数float接受正浮点值path接收string但也接受斜线uuid接受UUID通用唯一识别码字符串 xxxx-xxxx-xxxxx-xxxxx
代码
# 1. 导入flask核心类
from flask import Flask# 2. 初始化web应用程序的实例对象
app Flask(__name__)# 开启debug模式
app.config[DEBUG] Trueapp.route(rule/, methods[get, post])
def index():return h1hello flask1/h1
通过路由转换器来对路由参数显示格式转换和限制类型app.route(/goods/float:cid/uuid:gid)
def goods(gid, cid):print(gid, type(gid))print(cid, type(cid))return f显示cid{cid},gid{gid}的商品信息if __name__ __main__:# 3. 运行flask提供的测试web服务器程序app.run(host0.0.0.0, port5000)
自定义路由参数转换器
也叫正则匹配路由参数.
在 web 开发中可能会出现限制用户访问规则的场景那么这个时候就需要用到正则匹配根据自己的规则去限定请求参数再进行访问
具体实现步骤为
导入转换器基类BaseConverter在 Flask 中所有的路由的匹配规则都是使用转换器对象进行记录自定义转换器自定义类继承于转换器基类BaseConverter添加转换器到默认的转换器字典DEFAULT_CONVERTERS中使用自定义转换器实现自定义匹配规则
代码实现
导入转换器基类
from werkzeug.routing.converters import BaseConverter自定义转换器
class RegexConverter(BaseConverter):def __init__(self, map, *args, **kwargs):super().__init__(map, *args, **kwargs)self.regex args[0]
添加转换器到默认的转换器字典中并指定转换器使用时名字为: re
app.url_map.converters[re] RegexConverter使用转换器去实现自定义匹配规则当前此处定义的规则是手机号码 自定义路由转换[在实际项目开发中我们会单独准备一个python文件来保存转换器的定义代码]from werkzeug.routing.converters import BaseConverterclass RegexConverter(BaseConverter):def __init__(self, map, *args, **kwargs):super().__init__(map, *args, **kwargs)self.regex args[0]app.url_map.converters[re] RegexConverterapp.route(/sms/re(1[3-9]\d{9}):mobile)
def sms(mobile):return f发送短信给手机号{mobile}的用户app.route(/goods/re(\d):id)
def goods(id):return f显示商品id{id}的信息运行测试http://127.0.0.1:5000/sms/13012345671 如果访问的url不符合规则会提示找不到页面
manage.py课堂代码
# 1. 导入flask核心类
from flask import Flask# 2. 初始化web应用程序的实例对象
app Flask(__name__)# 开启debug模式
app.config[DEBUG] True
自定义路由转换[在实际项目开发中我们会单独准备一个python文件来保存转换器的定义代码]from werkzeug.routing.converters import BaseConverterclass RegexConverter(BaseConverter):def __init__(self, map, *args, **kwargs):super().__init__(map, *args, **kwargs)self.regex args[0]app.url_map.converters[re] RegexConverterapp.route(/sms/re(1[3-9]\d{9}):mobile)
def sms(mobile):return f发送短信给手机号{mobile}的用户app.route(/goods/re(\d):id)
def goods(id):return f显示商品id{id}的信息if __name__ __main__:# 3. 运行flask提供的测试web服务器程序app.run(host0.0.0.0, port5000)终端运行Flask项目
# 如果要基于开发环境在终端启动项目设置环境变量如下
export FLASK_DEBUGTrue
# 如果要基于生产环境在终端启动项目设置环境变量如下
# export FLASK_DEBUGFlase# 找到创建flask应用的模块路径例如manage.py
# 则ubuntu等Linux下的终端
export FLASK_APPmanage.py # 这是临时设置如果有永久设置可以通过/etc/profile保存
# 2. 在当前虚拟环境中如果安装了flask模块则可以使用全局命令flask run即可运行flask项目
flask run # 采用默认的127.0.0.1 和 5000端口运行项目
flask run --host0.0.0.0 --port8088 # 可以改绑定域名IP和端口