您现在的位置是:首页 >学无止境 >4-5.配置信息和路由信息网站首页学无止境

4-5.配置信息和路由信息

Lvcx 2024-07-24 06:01:03
简介4-5.配置信息和路由信息

一、配置信息

app.run()的参数

  • 参数1:host,如果我们不指定,默认值是127.0.0.1。
  • 参数2:port,如果我们不指定,默认值是5000。
  • 参数3:debug,调试模式,如果不指定,默认值是False。
    • 如果设置为True,有两个好处:
      1. 如果在运行过程中,直接改动代码了,就不需要重新启动程序,只要Ctrl+S保存即可部署程序。
      1. 如果程序报错了,会有友情提示。
from flask import Flask


app = Flask(__name__)


@app.route('/hh')
def index():
    print(1/0)
    return "<h2>this is index</h2>"


if __name__ == "__main__":
    app.run(host="127.0.0.1", port=5000, debug=True)

在这里插入图片描述
在这里插入图片描述

二、路由信息

1、在访问路由的时候指定参数

  • 格式:@app.route(“/<类型:变量名>”)
    • 常见的类型:
      1. 整数:int
      1. 小数:float
      1. 字符串:path(默认就是path)
"""
在访问路由的时候指定参数

- 格式:@app.route("/<类型:变量名>")
- 常见的参数类型
    - 整数 int
    - 小数 float
    - 字符串 path     默认就是path
"""""
from flask import Flask

app = Flask(__name__)


# 接收一个整数
@app.route('/<int:num>')
def get_intnumber(num):
    return "the age is %s" % num


# 接收一个小数
@app.route('/<float:num>')
def get_floatnumber(num):
    return "the float is %s" % num


# 接收一个字符串
@app.route('/<path:str1>')
def get_pathnumber1(str1):
    return "the path is %s" % str1


# 接收一个字符串
@app.route('/<str1>')
def get_pathnumber2(str1):
    return "the path is %s" % str1


if __name__ == "__main__":
    app.run(debug=True)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、自定义参数类型(自定义转换器)

  • 应用情况:
    • 如果系统提供的int、flost、path等参数满足不了需求的时候,我们需要自定义。
    • 之所以int、float、path可以接收不同的数据类型,是因为系统已经提供好对应的转换器了。
  • 自定义转换器的格式:
      1. 定义类,继承自BaseConverter。
      1. 重写init方法,接收来两个参数。
      1. 初始化父类成员变量,还有子类自己的规则。
      1. 将转换器类,添加到系统默认的转换器列表中。
"""
- 自定义转换器的格式:
    - 1. 定义类,继承自BaseConverter。
    - 2. 重写init方法。
    - 3. 初始化父类成员变量,还有子类自己的规则。
    - 4. 将转换器类,添加到系统默认的转换器列表中。
    
    需求:只接收3位整数
"""""
from flask import Flask
from werkzeug.routing import BaseConverter

app = Flask(__name__)


# - 1. 定义类,继承自BaseConverter。
class MyRegexConverter(BaseConverter):
    # 下面这样直接指定匹配规则,不够灵活,具体匹配什么规则应该交给路由
    # regex = "d{3}"       # 仅匹配3位整数

    # - 2. 重写init方法。接收两个参数
    def __init__(self, map, regex):
        # - 3. 初始化父类成员变量,还有子类自己的规则。
        super(MyRegexConverter, self).__init__(map)
        self.regex = regex


# - 4. 将转换器类,添加到系统默认的转换器列表中。
app.url_map.converters["haha"] = MyRegexConverter


# 匹配三位整数
# 使用haha(‘规则’),实际上是传递了两个参数,参数1:app.url_map,参数2:括号中写的正则表达式
@app.route('/<haha("d{3}"):number>')
def get_three_number(number):
    return "the three number is %s" % number


# 匹配四位整数
@app.route('/<haha("d{4}"):number>')
def get_four_number(number):
    return "the four number is %s" % number


# 匹配一个手机号
@app.route('/<haha("1[3-9]d{9}"):phone>')
def get_phone_number(phone):
    return "the phone is %s" % phone


if __name__ == "__main__":
    app.run(debug=True)

三、给路由增加其他的访问方式

  • 格式:@app.route(‘路径’, methods=[‘请求方式1’, ‘请求方式2’, …])
  • 常见的请求方式:
    • GET、POST、PUT、DELETE
  • 注意点:如果不指定请求方式,那么默认支持的是GET。
"""
给路由增加其他的访问方式
- 格式:@app.route('路径', methods=['请求方式1', '请求方式2', ......])
- 常见请求方式:GET、POST、PUT、DELETE
"""
from flask import Flask

app = Flask(__name__)


@app.route('/', methods=['POST', 'GET'])
def hello_world():
    return 'hello world Flask'


if __name__ == "__main__":
    print(app.url_map)
    app.run(debug=True)

在这里插入图片描述

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。