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

04flask_scripts使用的更多相关文章

随机推荐

  1. 对于iOS架构的认识过程

    MVC 经典就是经典,没有之一.iOS中MVC架构,看懂斯坦福大学白胡子老头这张图基本上就可以了.   斯坦福大学MVC架构.png 简单理解,就是Controller对象拥有View和Model对象 ...

  2. Exp4 恶意代码分析 20164314

    一.实践目标 1.是监控你自己系统的运行状态,看有没有可疑的程序在运行. 2.是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分析工具尽量使用原生指令或sysinternals,systr ...

  3. 解决本地SqlServer无法连接远程服务器数据库,错误10060

    本地SqlServer 连不上服务器的数据库环境,错误信息如下图,折腾来折腾去,最终还是解决了 第一步 查看服务器本地端口是否已经打开,查看方法:首先向C:\Windows\System32文件夹添加 ...

  4. python时间模块小结

    1.datetime 模块 为日期和时间处理同时提供了简单和复杂的方法.支持日期和时间算法的同时,实现的重点放在更有效的处理和格式化输出.该模块还支持时区处理: 简单例子: from datetime ...

  5. git知识总结-2.git基本操作之原理说明

    0.前言 本文主要对git常用命令的工作原理做一个详细的说明,常用命令主要包括: 1.git add git add相关命令很简单,主要实现将工作区修改的内容提交到暂存区,交由git管理. 2. gi ...

  6. sql 常见错误总结

    1.根据一张表更新另一张表的数据. . 写法轻松,更新效率高: update table1 set field1=table2.field1, field2=table2.field2 from ta ...

  7. Django-路由控制

    Django-路由控制 一.URL路由基础 URL是web服务的路口,用户通过浏览器发送过来的任何请求都会被发送到一个指定的URL地址里,然后被响应. 在django项目中编写路由就是向外暴露我们接收 ...

  8. java接口,接口的特性,接口实现多态,面向接口编程

    package cn.zy.cellphone; /**接口是一种引用数据类型.使用interface声明接口,形式 * 形式:public interface 接口名称{} * 接口不能拥有构造方法 ...

  9. tensorflow调试tfdbg

    tensorflow调试工具:tfdbg 使用教程:https://www.cnblogs.com/hellcat/articles/7812119.html 遇到的错误信息及解决方案 ModuleN ...

  10. unity 屏幕适配的问题

    首先是AB的加载时,会出现localscale的改变,需要在初始化时将其调节为1.0并且 offmax和min都设置为0,此时方才会出现在自己臆想之中(尤其是需要设置父节点时)