概述
因为Flask是一个轻量级的框架,在安装flask之后需要安装插件(?)来完成更多的功能
在博客Python操作MySQL数据库中介绍了MySQLdb的安装(费了老劲儿了),但Flask中还有很多的框架需要去安装,今天刚知道一个网址 http://www.lfd.uci.edu/~gohlke/pythonlibs/ 这是一个几乎包含所有Flask扩展包的网址,里面的文件大多以.whl为后缀,这种文件安装步骤也很简单,进入文件.whl下载的目录当中,打开命令行工具,运行pip install 文件.whl 就可以了。(.whl格式本质上是一个压缩包,里面包含了py文件,以及经过编译的pyd文件)
1.Flask
在安装完成Python后安装Flask就可以进行Web应用的开发。Flask是一个使用Python编写的轻量级Web应用框架。在Flask中,用户可以自主选择程序的组件。Flask在开发伊始就考虑到了扩展性,Flask提供了一个强健的核心,其中包括每个Web程秀都需要的基本功能,而其他功能则交给行业系统中的众多第三方扩展。
Flask有两个主要依赖:
(1)路由、调试、Web服务器网关接口(WSGI)由Werkzeug提供
(2)模板系统由Jinja2提供
这两个都是由Flask的核心开发者开发而成,在安装了pip之后(一般python中自带pip),在命令行窗口中运行pip install flask , 就开始安装flask了,编辑python的时候输入import flask 没有错误的话就说明安装成功了。
使用Flask创建程序实例:
初始化:from flask import Flask
app = Flask(__name__)
所有的Flask程序都必须创建一个程序实例,也就是Flask对象,说明这是一个Web服务。Web服务器根据Web服务器 网关接口协议(WSGI),把接受自客户端的请求都转交给这个对象处理。
Flask类的构造函数必须指定程序主模块或包的名字为构造参数 __name__是模块文件名,__main__是运行文件名
路由:
客户端吧请求发个Web服务器,Web服务器再把请求发送给Flask程序实例。程序实例需要知道对每个URL请求运行那些代码,路由就保存了URL到Python函数的映射关系。
@app.route('/')
def hello(): (视图函数) 函数的返回值可以是包含HTML的简单字符串,也可以是复杂的表单
return "Hello World!" 这个返回值是响应,如果客户端是Web浏览器,响应就是显示给用户查看的文档
@app.route('/user/<name>') 地址中包含可变部分的路由
def user(name):
return 'Hello,%s' % name
启动服务器:
if __name__=='__main__': __name__是模块文件名,__main__是运行文件名
app.run() 确保只有运行此程序的时候才启动Web服务器
请求响应循环
程序和请求上下文:
Flask从客户端收到请求后,不仅仅需要返回简单的字符串,为了返回更多的信息给客户,视图函数要能够访问一些对象来处理更多的请求。
Flask使用上下文临时把某些对象设为全局可访问
Flask上下文分为程序上下文(current_app,g)和请求上下文(request,session),其使用示例如下
Flask在分发请求之前激活上下文,请求结束后再将其删除,上下文在未激活时不能使用。
请求调度:Flask使app.route()修饰器形式或非修饰器形式app.add_url_rule()生成映射,可以使用app.url_map查看URL映射。
请求钩子:Flask提供了注册通用函数的功能,注册的函数可在请求被分发到视图函数之前或之后调用。请求钩子使用修饰器实现:
@app.before_request()
def get_username():
Pass
响应:视图函数必要时可以返回状态码 return “hello”,400(默认是200,400表示请求无效)
也可以创建响应对象返回:response = make_response(‘Hello Response’)
Response.set_cookie(‘answer’,’42’)
Return response
还可以在响应中进行重定向 Return redirect(‘http://www.baidu.com’)
当视图函数中出现错误时,可以使用abort函数抛出异常给Web服务器。
2.Flask-Script扩展
Flask Web开发时支持多种启动设置选项,但只能在脚本中作为参数传递给app.run(),这种方式并不十分方便,使用命令行参数传递选项是一种比较简便的方式。
Flask-Script是一个Flask扩展,为Flask程序添加了一个命令行解析器,Flask-Script自带一组常用选项,而且还支持自定义命令。核心代码如下:
From flask-script import Manager
manager = Manager(app)
If __name__==’__main__’:
manager.run() 启动Manager实例接受命令行中的命令
除了Flask-Script自带的命令(runserver,运行flask开发服务器,其中还可以设置端口号,host等;shell在Flask应用上下文中运行Python shell),自定义命令有以下几种方法:
第一种-----创建Command子类
Command子类必须定义一个run方法:
(manager.py)
from flask_script import Manager,Command
manager = Manager(app)
class Hello(Command):
'hello world'
def run(self):
print 'hello world'
manager.add_command('hello', Hello())
Python manager.py hello
第二种------使用@command修饰符
@manager.command
Def hello():
Print ‘hello’
第三种------使用Command实例的@option修饰符
@manager.option('-n','--name',dest='name',help='Your name',default='world')
@manager.option('-u', '--url', dest='url', default='www.csdn.com')
def hello(name, url):
'hello world or hello <setting name>'
print 'hello', name
print url
运行方式如下:
python manager.py hello
>hello world
>www.csdn.com
python manager.py hello -n sissiy -u www.sissiy.com
> hello sissiy
>www.sissiy.com
3.Flask-Bootstrap框架
BootStrap 是Twitter开发的一个开源框架,它提供的用户界面组件可用于创建整洁且具有吸引力的网页。Bootstrap是客户端框架,不直接涉及服务器,服务端要做的就是在模板中Bootstrap层叠样式表(CSS)和JavaScript文件的HTML响应。
在flask开发中,使用名为Flask-Bootstrap的Flask扩展,就可以简化集成的过程。
使用Flask-Bootstrap跟使用Flask-Script一样需要导入后再初始化(其实一般的Flask扩展的使用都是这样)。Bootstrap中的基模板具有基本的页面结构,可以通过继承直接使用。
学习Bootstrap之前需要具备HTML 、CSS 和JavaScript 的基础知识(慕课网http://www.imooc.com/learn/9)。之前一直混淆的一点点如下:
<div> 可定义文档中的分区或节(division/section)。<div>标签可以把文档分割为独立的、不同的部分。它可以用作严格的组织工具,并且不使用任何格式与其关联
div和span一样,都是没有意义的标记,所以常被用来用作布局,配合CSS可以显示出各种样式。div和span的区别在于,div是块级元素,而span是行内元素。块级元素会单独占一行,而行内元素则不独占。
<meta>元标签,meta是网页的一些基础信息的配置,放置于head元素中,用于声明网页使用的语言、编码、关键字、简介等等等等,是给机器看的,对访问者而言没有意义。
为了让 Bootstrap 开发的网站对移动设备友好,确保适当的绘制和触屏缩放,需要在网页的 head 之中添加 viewport meta 标签,如下所示:
<meta name="viewport" content="width=device-width, initial-scale=1.0">initial-scale=1.0 确保网页加载时,以 1:1 的比例呈现,不会有任何的缩放。
<span>标签是没有语义的,它的作用就是为了设置单独的样式用的。
Flask-Migrate
最后
以上就是安详夏天为你收集整理的flask框架集成之路Flask-Migrate的全部内容,希望文章能够帮你解决flask框架集成之路Flask-Migrate所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复