• 04flask_scripts使用


    1,flask_script作用

    flask_script的作用是可以通过命令行的实行来操作Flask,例如通过命令跑一个开发版本的服务器,设置数据库,定时任务等,

    我们把脚本命令代码放在一个叫做manage.py的文件中,然后运行python manage.py hello命令就可以输出print后的内容了。
    这里实际上用print模拟我们的操作,具体操作会替换print的内容。

    2,安装flask_scripts

    要使用flask_script,可以通过pip install flask_script安装最新版本。直接在pycharm安装或者使用wheel安装。

    3,具体操作

    主要的点和Django一样,这里新建一个manage.py文件,里面集成这些服务器功能,具体过程如下:。

    #flask_script_demo.py

    from
    flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello World!' if __name__ == '__main__': app.run()
    #manage.py
    from
    flask_script import Manager from flask_script_demo import app #从上面的文件中引入app from db_scripts import DBManager #db_scripts专门写数据库相关的文件的。
    manager = Manager(app) 
    @manager.command
    def runserver():
      print(
    "服务器跑起来了!!") # “runserver”直接就写在manage.py文件中,所以在cmd命令中使用“python manage.py runserver”
    # 和数据库相关的操作都放在一起
    manager.add_command(
    'db',DBManager)
    # db是命令前缀,作用:区别于“runserver”直接写在manage.py文件中,这个是写在专门给数据库的文件里的,
    # 前面加上“db”是便于在cmd命令中使用“python manage.py db init”,注意这个“db”,他相当于子命令
    if __name__ == '__main__':
      manager.run()
    #db_scripts.py
    from
    flask_script import Manager DBManager = Manager() # 这里括号里不用加“app”,因为这里不是主文件 @DBManager.command def init(): print("数据库初始化完成!") @DBManager.command def migrate(): print("数据表迁移成功!")

    4,注意点

    这里使用的是虚拟环境,我们运行服务器不是在pycharm里,而是在cmd里,我们进入如下文件夹(该项目根目录):

    然后在框中cmd,执行下图,命名为“”python manage.py  runserver”,注意这是直接写在manage.py里的函数:

    我们再写manage.py调用“db_scripts.py”的文件:

    效果如图:

    =================================================================================================

    下面我们具体讲讲“manager.add_command('db',DBManager)”的用法: 

    这里为什么加了个“db”?

    可以看到manage.py中有这么一句:

    @manager.command 
    def runserver(): 
      print("服务器跑起来了!!")
    

      这是直接存在于manage.py中的一句话,但是对于被导入到manage.py文件中的“init”和migrate而言,不能直接通过“python manage.py init”来直接运行服务器

    #db_scripts.py
    from flask_script import Manager
    
    DBManager = Manager()
    # 这里括号里不用加“app”,因为这里不是主文件
    
    @DBManager.command
    def init():
        print("数据库初始化完成!")
    @DBManager.command
    def migrate():
        print("数据表迁移成功!")
    

     这里的原因就是为了区别被导入文件与本身就有的文件的区别,正确的服务器运行代码应该为:python manage.py prex init

  • 相关阅读:
    IM的扫码登录功能如何实现?一文搞懂主流的扫码登录技术原理
    IM“扫一扫”功能很好做?看看微信“扫一扫识物”的完整技术实现
    2020年了,Android后台保活还有戏吗?看我如何优雅的实现!
    P2P技术详解(三):P2P中的NAT穿越(打洞)方案详解(进阶分析篇)
    微信团队分享:极致优化,iOS版微信编译速度3倍提升的实践总结
    史上最通俗,彻底搞懂字符乱码问题的本质
    你知道,HTTPS用的是对称加密还是非对称加密?
    IM开发基础知识补课(七):主流移动端账号登录方式的原理及设计思路
    面视必备,史上最通俗计算机网络分层详解
    阿里钉钉技术分享:企业级IM王者——钉钉在后端架构上的过人之处
  • 原文地址:https://www.cnblogs.com/two-peanuts/p/10726640.html
Copyright © 2020-2023  润新知