Flask入门【1】

Flask入门【1】

  • flask简介
  • 代码解析
    • 1.注册路由
    • 2. 为视图绑定多个url
    • 3. 动态URL
  • 项目配置
  • URL与端点
  • flask命令
  • 模板与静态文件
    • 模板(template)
    • 静态文件(static file)
  • MVC架构中,程序被分为三个组件

flask简介

flask是使用python编写的web微框架,我这里使用的是pycharm直接新建的flask项目进行操作。
Flask入门【1】_第1张图片

代码解析

1.注册路由

# 注册路由,参数为url,使url与函数建立关联
@app.route('/')
def hello_world():
    return 'Hello, world!'

在一个web应用里,客户端和服务器上的Flask程序的交互可以简单概括为以下几步:

  1. 用户在浏览器中输入url访问某个资源
  2. Flask接受用户请求并分析请求的URL
  3. 为这个URL找到对应的处理函数
  4. 执行函数并生成响应,返回给浏览器
  5. 浏览器接收并解析响应,将信息显示在页面中。

Flask中,只需为函数附加app.route()装饰器,并传入URL规则作为参数,就可以让URL与函数建立关联。这个过程叫做注册路由,路由负责管理URL和函数之间的映射,而这个函数则被称为视图函数。
Tips:route装饰器的第一个参数是URL规则,必须以’/'开始,这里的url是相对url

2. 为视图绑定多个url

@app.route('/lol/')
@app.route('/lol/lol/')
def hello():
    return '

LOL!

'

用户访问以上两个url均会触发hello函数,获得相同的相应。

3. 动态URL

# 动态url,defaults中为name参数设置默认值,相当于def greet(name=Programmer):
@app.route('/greet', defaults={'name': 'Programmer'})
@app.route('/greet/')
def greet(name):
    return f'

Hello, {name}

'

可以在url规则中添加变量成分,用<变量>的形式表示。Flask处理请求时会把变量传入视图函数,所以我们可以添加参数获取这个变量值。上述代码中,类似/greet/AAA,/greet/BBB等格式的请求都会触发这个视图函数。
除此之外,如果用户未添加变量,则会返回404错误。解决方法可以如上文,为greet视图新添加一个app.route()装饰器,为/greet设置默认值。该方法等效于在greet视图中设置name参数默认值

项目配置

点击这里前往Flask官方配置文档
Flask提供了许多方法来加载配置。

  • 比如,可以像加载字典中的键值对一样加载配置:app.config['ADMIN_NAME'] = 'PETER'
  • 使用update方法可以一次加载多个值。app.config.update{TESTING=TRUE,SECRET_KEY='114514'}
  • 读取config配置的方法和字典类似,如value = app.config['ADMIN_NAME']
    `

URL与端点

Flask中提供url_for()函数获取URL。调用该函数时,第一个参数为端点值(endpoint)。在Flask中,端点用来标记一个视图函数以及对应的URL规则,端点的默认值为视图函数的名称。在app.route()装饰器中,可以使用endpoint参数自定义端点值,不过一般没必要。

@app.route('/lol/lol/')
def hello():
    return '

LOL!

'

在这段代码中,使用url_for(‘hello’)即可获得对应的url,即’/lol/lol/’
如果URL中含有动态部分,则需要向url_for()函数中传入参数,如对应下列代码:

@app.route('/greet/')
def greet(name):
    return f'

Hello, {name}

'

这时使用url_for(‘greet’, name=‘Jack’)得到的URL为’/greet/Jack’
Tips:若要获取绝对URL,则可以将url_for()函数中的_external参数设置为True

flask命令

除了内置的flask run等命令,也可以用app.cli.command()装饰器注册一个flask命令,如:

@app.cli.command()
def hello():
    click.echo('Hello,Man')

这时在终端输入 flask hello,就会打印出 Hello, Man的字样。

模板与静态文件

模板(template)

  • 程序页面的HTML文件

静态文件(static file)

  • css文件
  • JavaScript文件
  • 图片,字体文件等资源文件

MVC架构中,程序被分为三个组件

  1. 数据处理(Model)
  2. 用户界面(View)
  3. 交互逻辑(Controller)
    但严格来说,flask不是MVC架构的框架

你可能感兴趣的:(flask从0开始,flask,python,后端)