내 연락처 정보
우편메소피아@프로톤메일.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
# 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 "<h1>hello flask</h1>"
if __name__ == '__main__':
# 3. 运行flask提供的测试web服务器程序
app.run(host="0.0.0.0", port=5000)
경로 및 보기의 이름은 전역적으로 고유해야 하며 반복할 수 없습니다. 그렇지 않으면 오류가 보고됩니다.
# 1. 导入flask核心类
from flask import Flask
# 2. 初始化web应用程序的实例对象
app = Flask(__name__)
# 开启debug模式
app.config["DEBUG"] = True
# 参数1:rule设置当前视图的路由地址
# 惨呼2:methods,设置当前视图的HTTP请求方法,允许一个或多个方法,不区分大小写
@app.route(rule="/", methods=["get", "post"])
def index():
return "<h1>hello flask1</h1>"
if __name__ == '__main__':
# 3. 运行flask提供的测试web服务器程序
app.run(host="0.0.0.0", port=5000)
라우팅이란 무엇입니까?
라우팅은매핑 관계 . 애플리케이션(뷰)과 URL 주소를 묶는 1:1 매핑 관계입니다! 개발 과정에서 프로젝트를 작성할 때 사용되는 라우팅은 프레임워크/프로젝트에서 라우팅 기능을 완료하는 데 사용되는 클래스를 참조하는 경우가 많습니다. 이 클래스는 일반적으로 라우팅 클래스, 줄여서 라우팅입니다.
플라스크에서 URL은 두 가지 방법으로 라우팅 매개변수를 전달할 수 있습니다.
라우팅 매개변수는 URL 경로의 일부입니다.
# 1. 导入flask核心类
from flask import Flask
# 2. 初始化web应用程序的实例对象
app = Flask(__name__)
# 开启debug模式
app.config["DEBUG"] = True
@app.route(rule="/", methods=["get", "post"])
def index():
return "<h1>hello 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(host="0.0.0.0", port=5000)
라우팅 매개변수 유형을 제한하기 위해 플라스크 시스템 자체 변환기가 werkzeug/routing/converters.py 파일에 작성됩니다. 하단에서 다음 사전을 볼 수 있습니다.
# converters用于对路由中的参数进行格式转换与类型限定的
DEFAULT_CONVERTERS: t.Mapping[str, t.Type[BaseConverter]] = {
"default": UnicodeConverter, # 默认类型,也就是string
"string": UnicodeConverter, # 字符串,不包含 /
"any": AnyConverter, # 任意类型
"path": PathConverter, # 也是字符串,但是包含了 /
"int": IntegerConverter,
"float": FloatConverter,
"uuid": UUIDConverter,
}
시스템에 내장된 변환기의 구체적인 사용법은 각 변환기의 주석 코드에 기록되어 있습니다. 각 변환기의 초기화 매개변수에 주의하십시오.
변환기 이름 | 설명하다 |
---|---|
끈 | 기본 유형, 슬래시 없이 모든 텍스트를 허용합니다. |
정수 | 양의 정수를 허용합니다. |
뜨다 | 양의 부동 소수점 값을 허용합니다. |
길 | 인수하다string 슬래시도 허용됩니다. |
유아이디 | UUID(범용 고유 식별자) 문자열 xxxx-xxxx-xxxxx-xxxxx 허용 |
암호:
# 1. 导入flask核心类
from flask import Flask
# 2. 初始化web应用程序的实例对象
app = Flask(__name__)
# 开启debug模式
app.config["DEBUG"] = True
@app.route(rule="/", methods=["get", "post"])
def index():
return "<h1>hello 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(host="0.0.0.0", port=5000)
일반 일치 라우팅 매개변수라고도 합니다.
웹 개발에서는 사용자 액세스 규칙을 제한하는 시나리오가 있을 수 있습니다. 이때 액세스하기 전에 정기적인 일치를 사용하여 자체 규칙에 따라 요청 매개변수를 제한해야 합니다.
구체적인 구현 단계는 다음과 같습니다.
암호
from werkzeug.routing.converters import BaseConverter
class RegexConverter(BaseConverter):
def __init__(self, map, *args, **kwargs):
super().__init__(map, *args, **kwargs)
self.regex = args[0]
app.url_map.converters["re"] = RegexConverter
"""
自定义路由转换[在实际项目开发中,我们会单独准备一个python文件来保存转换器的定义代码]
"""
from werkzeug.routing.converters import BaseConverter
class RegexConverter(BaseConverter):
def __init__(self, map, *args, **kwargs):
super().__init__(map, *args, **kwargs)
self.regex = args[0]
app.url_map.converters["re"] = RegexConverter
@app.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 BaseConverter
class RegexConverter(BaseConverter):
def __init__(self, map, *args, **kwargs):
super().__init__(map, *args, **kwargs)
self.regex = args[0]
app.url_map.converters["re"] = RegexConverter
@app.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(host="0.0.0.0", port=5000)
# 如果要基于开发环境在终端启动项目,设置环境变量如下:
export FLASK_DEBUG=True
# 如果要基于生产环境在终端启动项目,设置环境变量如下:
# export FLASK_DEBUG=Flase
# 找到创建flask应用的模块路径,例如:manage.py
# 则ubuntu等Linux下的终端:
export FLASK_APP=manage.py # 这是临时设置,如果有永久设置,可以通过/etc/profile保存
# 2. 在当前虚拟环境中,如果安装了flask模块,则可以使用全局命令flask run,即可运行flask项目
flask run # 采用默认的127.0.0.1 和 5000端口运行项目
flask run --host=0.0.0.0 --port=8088 # 可以改绑定域名IP和端口