欢迎来到Flask世界
Flask是一个轻量级的可定制框架,使用Python语言编写,较其他同类型框架更为灵活、轻便、安全且容易上手。它可以很好地结合MVC模式进行开发,开发人员分工合作,小型团队在短时间内就可以完成功能丰富的中小型网站或Web服务的实现。另外,Flask还有很强的定制性,用户可以根据自己的需求来添加相应的功能,在保持核心功能简单的同时实现功能的丰富与扩展,其强大的插件库可以让用户实现个性化的网站定制,开发出功能强大的网站。
Flask是目前十分流行的web框架,采用Python编程语言来实现相关功能。它被称为微框架(microframework),“微”并不是意味着把整个Web应用放入到一个Python文件,微框架中的“微”是指Flask旨在保持代码简洁且易于扩展,Flask框架的主要特征是核心构成比较简单,但具有很强的扩展性和兼容性,程序员可以使用Python语言快速实现一个网站或Web服务。一般情况下,它不会指定数据库和模板引擎等对象,用户可以根据需要自己选择各种数据库。Flask自身不会提供表单验证功能,在项目实施过程中可以自由配置,从而为应用程序开发提供数据库抽象层基础组件,支持进行表单数据合法性验证、文件上传处理、用户身份认证和数据库集成等功能。Flask主要包括Werkzeug和Jinja2两个核心函数库,它们分别负责业务处理和安全方面的功能,这些基础函数为web项目开发过程提供了丰富的基础组件。Werkzeug库十分强大,功能比较完善,支持URL路由请求集成,一次可以响应多个用户的访问请求;支持Cookie和会话管理,通过身份缓存数据建立长久连接关系,并提高用户访问速度;支持交互式Javascript调试,提高用户体验;可以处理HTTP基本事务,快速响应客户端推送过来的访问请求。Jmja2库支持自动HTML转移功能,能够很好控制外部黑客的脚本攻击。系统运行速度很快,页面加载过程会将源码进行编译形成python字节码,从而实现模板的高效运行;模板继承机制可以对模板内容进行修改和维护,为不同需求的用户提供相应的模板。目前Python的web框架有很多。除了Flask,还有django、Web2py等等。其中Diango是目前Python的框架中使用度最高的。但是Django如同java的EJB(EnterpriseJavaBeansJavaEE服务器端组件模型)多被用于大型网站的开发,但对于大多数的小型网站的开发,使用SSH(Struts+Spring+Hibemat的一个JavaEE集成框架)就可以满足,和其他的轻量级框架相比较,Flask框架有很好的扩展性,这是其他Web框架不可替代的。
-
第一行代码,导入了flask类
from flask import Flask
-
第二步创建了Flask类的实例
app = Flask(name)
这行代码里有一个参数__name__,这个参数用到告诉flask你的application的名字,官方有一句话:
If you are using a single module,name is always the correct value. If youhowever are using a package, it’s usually recommended to hardcode the name ofyour package there.
意思就是说,如果是单一的应用,用__name__就可以了,如果是一个应用程序包,就hardcode一个名字给这个参数。比如:
app = Flask(“myApp”)
由于目前我们的应用都相对简单,所以统一使用__name__作为参数。
-
使用route()修饰器注明通过什么样的url可以访问我们的函数,同时在函数中返回要显示在浏览器中的信息
@app.route(’/’)
def hello_world():
return ‘HelloWorld!’
可以通过修改route()修饰器实现不同的url解析,比如,我们改成如下的样子
@app.route(’/index’)
def hello_world():
return ‘HelloWorld!’
再次运行程序,访问/index才能显示出hello world, 如图所示:
-
最后调用run()方法,运行flask web应用程序
if name == ‘main’:
app.run()
其中if name==’main’的意思是,如果此文件是直接运行的才会执行app.run()这个方法,如果是通过import在其它py文件中调用的话是不会执行的
比如我们修改code.py中的hello_world方法,如下:
@app.route(’/index’)
def hello_world():
if name==‘main’:
return ‘Hello World!’
else:
return "hello my name is "+name
即当__name__为__main__时还是执行原来的逻辑,返回hello world,如果不是则输出此时的名字。
然后我们新建一个sub.py文件然后导入code.py,并且执行hello_world方法
import Code
def CallCodeFun():
result = Code.hello_world()
print(result)
CallCodeFun()
执行sub.py后,输入结果如下:
此时的__name__是Code而不是__main__
而此时,在sub.py中加一句print(name)可以发现sub.py中的__name__变成了__main__
由此我们可以得出__name__ 如果是 main 那么代表他是一个入口文件,直接执行的
————————————————
原文链接:https://blog.csdn.net/lileihappy/article/details/79426108