Flask之flask-script
简介
Flask-Scropt插件为在Flask里编写额外的脚本提供了支持。这包括运行一个开发服务器,一个定制的Python命令行,用于执行初始化数据库、定时任务和其他属于web应用之外的命令行任务的脚本。
安装
用命令pip和easy_install安装:
pip install Flask-Script
从github下载最新版本,源码编译安装:
git clone https://github.com/smurfix/flask-script.git
cd flask-script
python setup.py develop
创建并运行命令行
第一步:实例化manage对象
需要创建一个可以运行你脚本命令的Python模块。你可以随意命名它。我这里就以manage.py为例。
在manage.py文件中,需要先创建一个Manager实例。Manager类会跟踪所有的命令和命令行调用的参数:
from flask_script import Manager app = Flask(__name__)
# configure your app manager = Manager(app) if __name__ == "__main__":
manager.run()
调用manager.run()方法初始化Mnager实例来接收命令行输入。
此时,已经可以通过命令启动项目了,如下:
python manage.py runserver
项目会以:Running on http://127.0.0.1:5000/ 的方式启动,
如需指定ip和端口:
python manage.py runserver -h 127.0.0.1 -p 8090
项目则会以:Running on http://127.0.0.1:8090/ 的方式启动,其实也是可以指定IP的,只是本质也是127.0.0.1
第二步:创建添加自定义命令
创建自定义命令有三种方法:
- 定义Command类的子类
- 使用@command装饰器
- 使用@option装饰器
(1) 定义Command类的子类
为了简单,我们就创建一个hello命令来输出“hello world”:
from flask_script import Command class Hello(Command):
"prints hello world" def run(self):
print "hello world"
接下来我们需要把命令添加到Mannager实例:
manager.add_command('hello', Hello())
完整代码如下:
from flask_script import Manager,Command
from flask import Flask
app = Flask(__name__) manager = Manager(app) class hello(Command):
"prints hello world"
def run(self):
print("hello world") manager.add_command('hello', hello()) if __name__ == "__main__":
manager.run()
使用:
在命令行运行如下命令:
(1)$python manage.py hello
hello world
(2)$python manage.py
usage: manage.py [-?] {hello,shell,runserver} ... positional arguments:
{hello,shell,runserver}
hello prints hello world
shell Runs a Python shell inside Flask application context.
runserver Runs the Flask development server i.e. app.run() optional arguments:
-?, --help show this help message and exit 也可以通过把包含Command实例的字典作为manager.run()的参数:
manager.run({'hello' : Hello()})
(2)使用@command装饰器
对于简单的命令,我们可以使用属于Manager实例的@command装饰器。
@manager.command
def hello():
"Just say hello"
print("hello")
其使用方法和前面一样。
(3)使用@option装饰器
如何需要通过命令行进行比较复杂的控制,可以使用Manager实例的@option装饰器。
@manager.option('-n', '--name', help='Your name')
def hello(name):
print("hello", name)
使用
python manage.py -n '付勇'
则会输出:‘hello 付勇’
Flask之flask-script的更多相关文章
- Python flask 基于 Flask 提供 RESTful Web 服务
转载自 http://python.jobbole.com/87118/ 什么是 REST REST 全称是 Representational State Transfer,翻译成中文是『表现层状态转 ...
- [Flask]学习Flask第三天笔记总结
from flask import Flask,render_template,request from others import checkLogin app = Flask(__name__) ...
- Flask01 初识flask、flask配置
1 什么是flask Flask是一个使用 Python 编写的轻量级 Web 应用框架.其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 . 百度百科:点击前往 中文文档: ...
- 【Flask】Flask学习笔记(一) 应用基本结构
初始化 使用前必须创建一个应用实例 from flask import Flask app = Flask(__name__) 路由和视图函数 请求流程 客户端(web浏览器)--> web服 ...
- python框架之Flask(1)-Flask初使用
Flask是一个基于 Python 开发并且依赖 jinja2 模板和 Werkzeug WSGI 服务的一个微型框架,对于 Werkzeug 本质是 Socket 服务端,其用于接收 http 请求 ...
- cannot import name 'Flask' from 'flask'
今天发现了智障的真我. 刚入门flask,建了一个文件命名叫flask.py 在virtualenv的容器里运行该py文件,报错cannot import name 'Flask' from 'fla ...
- flask框架----flask中的wtforms使用
一.简单介绍flask中的wtforms WTForms是一个支持多个web框架的form组件,主要用于对用户请求数据进行验证. 安装: pip3 install wtforms 二.简单使用wtfo ...
- flask框架----flask基础
知识点回顾 1.flask依赖wsgi,实现wsgi的模块:wsgiref,werkzeug,uwsgi 2.实例化Flask对象,里面是有参数的 app = Flask(__name__,templ ...
- flask框架----flask入门
一.Flask介绍(轻量级的框架,非常快速的就能把程序搭建起来) Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是 ...
- Flask学习-Flask app启动过程
因为0.1版本整体代码大概只有350行,比较简单.所以本篇文章会以Flask 0.1版本源码为基础进行剖析Flask应用的启动过程. Flask参考资料flask,官网有一个最简单app: from ...
随机推荐
- [Linux内核]ctrl-z/fg/bg/nohup/setsid/()与&/disown/screen
转自:https://my.oschina.net/alphajay/blog/65058 My Tips: Ctrl -z -> suspend fg -> ...
- HTML5标准最终来了,看什么书学习最好??????
近期看了一本书<HTML5网页开发实例具体解释>,是大众点评的攻城狮写的,认为非常有收获.看样子眼下大多数的国内网页都支持HTML5了,全栈project师是不是必须得会HTML5? 有兴 ...
- 重启php
注意这是重启php,不是重启apache service php-fpm restart
- 同过增强Connection类[重写了close的方法]实现的从连接池取出连接并放回连接的简单的实现流程
package tk.dong.connection.util; import java.io.IOException;import java.io.InputStream;import java.i ...
- 关于webRTC中video的使用实践
此次demo使用chrome49调试测试 前端在操作视频输入,音频输入,输出上一直是比较弱的,或者说很难进行相关的操作,经过我最近的一些研究发现,在PC上实际上是可以实现这一系列的功能的,其实现原理主 ...
- js控制radio选中
经常会遇到js控制radio选中和切换的问题 之前一直使用的是checked属性来完成的 但是现在发现这个属性有个大问题 今天就是用js给选中radio的赋值,使用的$().attr("ch ...
- Hibernate_day04--课程安排_Hibernate查询方式_对象导航查询_OID查询
Hibernate_day04 上节内容 今天内容 Hibernate查询方式 对象导航查询 OID查询 HQL查询 查询所有 条件查询 排序查询 分页查询 投影查询 聚集函数使用 QBC查询 查询所 ...
- std__vector介绍
vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vec ...
- XE10 塔建 Android 开发环境 (已测试通过)
XE10 塔建 Android 开发环境 1. E:\DevCSS\Android\adt-bundle-windows-x86-20131030\adt-bundle-windows-x86-201 ...
- python3-requests库的使用
同步请求库requests用来做测试和简单爬虫其实非常好用的,今天来讲一讲,毕竟不熟悉就用,吃了很大亏啊,文档一定要好好看 http://docs.python-requests.org/zh_CN/ ...