我是靠谱客的博主 安详夏天,最近开发中收集的这篇文章主要介绍flask框架集成之路Flask-Migrate,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

因为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等;shellFlask应用上下文中运行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-BootstrapFlask扩展,就可以简化集成的过程。

使用Flask-Bootstrap跟使用Flask-Script一样需要导入后再初始化(其实一般的Flask扩展的使用都是这样)。Bootstrap中的基模板具有基本的页面结构,可以通过继承直接使用。

学习Bootstrap之前需要具备HTML CSS JavaScript 的基础知识(慕课网http://www.imooc.com/learn/9。之前一直混淆的一点点如下:

<div> 可定义文档中的分区或节(division/section)。<div>标签可以把文档分割为独立的、不同的部分。它可以用作严格的组织工具,并且不使用任何格式与其关联

divspan一样,都是没有意义的标记,所以常被用来用作布局,配合CSS可以显示出各种样式。divspan的区别在于,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所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部