Flask基础之一

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flask基础之一相关的知识,希望对你有一定的参考价值。

hello world
#从flask这个包中导入Flask这个类
#Flask这个类是项目的核心,以后的很多操作都是基于这个类的对象
#注册url,注册蓝图都是这个类的对象
from flask import Flask

#创建一个Flask对象,传递__name__这个参数进去
#__name__这个参数的作用:
# 1.规定模板和静态资源的路径
# 2.以后的一些Flask插件,比如Flask_migrate,Flask_SQLAlchemy报错的话,哪么Flask就会通过这个参数找到具体的报错位置
app = Flask(__name__)

# @app.route()是一个装饰器,将对应的“/”路径应用到hello_world()这个函数上面
# 在访问“/”的时候在页面上返回Hello World
@app.route(‘/‘)
def hello_world():
    return ‘Hello World!‘

# 如果作为一个主文件运行,哪么执行app.run()方法,也就是启动这个网站
if __name__ == ‘__main__‘:
    app.run()**strong text**

debug模式

  • 为什么要开启DEBUG模式?

    • 如果开启了debug模式,name代码在调试过程中出现了异常,在浏览器页面中可以看到具体的报错信息,以及具体的错误代码位置,方便开发者调试。
    • 如果flask开启了debug模式,name以后再python中修改任何代码,只要在pycharm中使用ctrl+s即可保存重载,不需要手动去重载程序
  • 如何配置debug模式:
  1. app.run()
    app.run(debug=True)
  2. app.debug
    app.debug = True
  3. 配置信息方式(使用参数形式的方式)
    app.config.update[DEBUG=True]
    #其实也就是update了config字典
  4. 通过配置文件的形式
    - 创建一个config.py的配置文件,写入
    DEBUG = True
    - 然后在你的app.py文件中写入
    app.config.from_object(config)  #即可读取配置文件中的DEBUG=True

    debug PIN码

    D:\MyDevSoftInstallDir\Python3\python3.exe D:/myflask/base/base.py
    * Restarting with stat
    * Debugger is active!
    * Debugger PIN: 177-952-649
    * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

    然后在页面上调试代码的时候用到。
    也是为了安全考虑。

    配置文件两种方式详解

    • 第一种方式:
      在项目主路径下创建config.py
      DEBUG=True

      然后在主项目里面去读取config.py里面的配置:

      from flask import Flask
      import config
      app = Flask(__name__)
      app.config.from_object(config)
    • 第二种方式:直接读取文件的形式,也可以是普通的txt文件形式;这种方式不需要直接import config
      在项目主路径下创建config.py
      DEBUG=True

      然后在主项目里面去读取config.py里面的配置:

      from flask import Flask
      app = Flask(__name__)
      app.config.from_pyfile(‘config.py‘,silent=True)  #静默模式加载配置文件(找不到配置文件不报错),文件的后缀名不可少

      url与视图函数的映射

    • 传递参数:

      传递参数的语法是/<参数类型:参数名称>/,然后在视图函数中也要定义同名的参数

  • 参数的数据类型
    • string:只接受字符串,没有任何“/或者\”的文本
    • int:只接受整数
    • float:只接受浮点数,整数都不行哈
    • path:和string类似,但是接受斜杠
    • uuid:只有接受符合uuid的字符赤岸,一般用作表的主键
    • any:可以指定多种路径

接收用户传递参数的方式:

  • 使用path的方式(将参数嵌入到路径中)
  • 使用查询字符串的形式 (也就是通过?key=value的形式传递的,只能通过request.args.get的方式来获取)

如果页面想要做SEO优化的话,那么推荐使用path的形式,反之就是查询字符串的形式

练习

from flask import Flask,request
app = Flask(__name__)
@app.route(‘/‘)
def hello_world():
    return ‘Hello World!‘
@app.route(‘/list/‘)
def article_list():
    return ‘article list!‘
@app.route(‘/p1/<article_id1>‘)
def article_detail(article_id1):
    return "请求的文章是:%s" %article_id1
@app.route(‘/p2/<string:article_id2>‘)
def article_detail2(article_id2):
    return "请求的文章是:%s" %article_id2
@app.route(‘/p3/<int:article_id3>‘)
def article_detail3(article_id3):
    return "请求的文章是:%s" %article_id3
@app.route(‘/p4/<path:article_id4>‘)
def article_detail4(article_id4):
    return "请求的文章是:%s" %article_id4
# import uuid
# print(uuid.uuid4())
@app.route(‘/p5/<uuid:article_id5>‘)   #数据的唯一性,长度较长,有损效率(一般在用户表中使用)6a9221f6-afea-424a-a324-8ceaa5bdfc98
def article_detail5(article_id5):
    return "请求的文章是:%s" %article_id5
@app.route(‘/p6/<any(blog,user):url_path>/<id>/‘)
def detail(url_path,id):
    if url_path == "blog":
        return "博客详情 %s" %id
    else:
        return "用户详情 %s" %id
#通过问号形式传递参数
@app.route(‘/d/‘)
def d():
    wd = request.args.get(‘wd‘)  #获取浏览器传递参数
    return ‘通过查询字符串的方式传递的参数是,%s‘%wd   #请求http://127.0.0.1:8080/d/?wd=php
if __name__ == ‘__main__‘:
    app.run(debug=True,host=‘0.0.0.0‘,port=8080)

以上是关于Flask基础之一的主要内容,如果未能解决你的问题,请参考以下文章

Flask 编写http接口api及接口自动化测试

Java语言基础之方法的设计

python Flask - 数据库片段

12_关于flask中的宏

python flask 基础入门

python常用框架之一 Flask 初识Flask