Flask(2)-程序的基本结构

11 篇文章 0 订阅

1. 初始化

Flask程序需要创造一个程序实例。Web服务器使用WSGI协议,将客户端所有请求交给这个实例(对象)处理。

from flask import Flask
app = Flask(__name__)
  • Flask类的构造函数(__init__())只有一个必须的参数,即程序主模块或包的名,这里使用__name__变量表示。

2. 路由和视图函数

路由:客户端把请求发给Web服务器,服务器把请求发给Flask实例。对每个URL都有一个处理函数,处理URL和函数之间关系的程序称为路由。

定义路由的简单方法,使用route修饰器,把修饰器的函数注册为路由,这样URL和函数之间关系就确定了。

@app.route('/')
def index():
    return '<h1>Hello World!</h1>'

index函数称为视图函数,返回值称为响应

  • 返回的响应可以是字符串、表单。

定义动态路由:

app.route('/user/<name>')
def user(name):
    return '<h1>Hello, %s!</h1>' % name
  1. 尖括号内为动态部分,默认使用字符串,也可使用其他类型。
    如路由/user/<int:id>,只会匹配动态字段id为整数的URL。
  2. Flask支持在路由中使用int、float和path类型。
    path也是字符串,只是不把斜线视为分隔符,当作动态片段的一部分。

3. 启动服务器

if __name__ == '__main__':
    app.run(debug=True)

此段含义为当直接执行这段程序时运行app,若由其他脚本引入,则不执行。

  • debug=True为调试模式。

4. 完整程序

如下hello.py

from flask import Flask
app = Flask(__name__)

@app.route('/')
def index():
    return '<h1>Hello World!</h1>'
def user(name):
    return '<h1>Hello %s!</h1>' %s name

if __name__ == '__main__':
    app.run(debug=True)

运行hello.py,访问http://localhost:5000;访问http://localhost:5000/user/Michael;

5. 请求-响应

请求上下文

Flask从客户端收到请求,需要访问一些对象。视图函数访问对象,一个方法是把对象作为参数传入函数,但这会很麻烦,这时使用上下文临时把某些对象变为全局可访问,这样就不用一个个的传入函数。

from flask import request
@app.route('/')
def index():
    user_agent = reguest.headers.get('User-agent')
    return '<p>Your brower is %s</p>' % user_agent
  • 在这个视图函数中,把request当作全局变量使用。

Flask中的上下文: 程序上下文和请求上下文。

  • current_app
  • g
  • request
  • session
    Flask在分发请求之前激活 (或推送)程序和请求上下文,请求处理完成后删除。如果在使用之前没有激活,则会报错。

请求调度

Flask使用app.route修饰器或非修饰器形式的app.add_url_rule()生成映射。

查看URL映射(确保激活虚拟环境):

>>>from hello import app
>>>app.url_map

请求钩子

在处理请求之前或之后执行代码,叫做钩子。
请求钩子使用修饰器实现。有四种钩子:

  • before_first_request
  • before_request
  • after_request
  • teardown_request

响应

HTTP响应返回1个、2个或3个值组成的元组,由字符串、状态码、首部组成的字典三部分组成。

还可返回Response对象。make_response()函数用于生成response对象,接受1个、2个或3个参数,与元组对应。这样我们可以在返回对象上应用各种方法,进一步设置响应。

  • 重定向的特殊响应 - 没有页面文档,只有一个新地址,常用于Web表单。用redirect()函数设置这种响应。
from flask import redirect 
@app.route('/')
def index():
    return redirect('http:www.sina.com.cn')
  • abort函数特殊响应
from flask import abort

@app.route('/')
def get_user(id):
    user = load_user(id)
    if not user:
        abort(404)
    return '<h1>Hello, %s</h1>' % user.name

返回码

  • 200 成功
  • 302 重定向
  • 404 失败

6. 扩展

使用Flask-Script支持命令行选项

Flask-Script扩展为程序添加一个命令行解析器:

hello.py: 使用Flask-Script
from flask.ext.script import Manager
manager = Manager(app)

# ...

if __name__ == '__main__':
    manager.run()
  • 专为Flask开发的扩展都在flask.ext命名空间下。Flask-script输出一个Manager的类。
  • 扩展的初始化方法:把程序实例作为参数传给构造函数,初始化主类的实例。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
Flask后台小程序是基于Python Web框架Flask开发的一种轻量级后台服务程序Flask是一个简单而强大的框架,易于学习和使用。它提供了基本的构建网站所需的工具和组件,可以快速搭建一个功能完善的后台系统。 Flask后台小程序可以用于实现各种功能,如数据处理、数据存储、用户管理等。通过Flask框架提供的路由功能,可以进行URL映射和请求处理,实现与前端用户的数据交互。同时,Flask支持使用各种扩展插件,如数据库操作、表单验证、邮件发送等,方便开发者根据实际需求进行功能扩展。 在开发Flask后台小程序时,需要编写Python代码,定义各个路由的处理函数,并根据业务需求进行相应的逻辑处理。同时,还需要设计数据库的结构和处理数据的逻辑。Flask提供了轻量级的ORM框架SQLAlchemy,可以快速进行数据库操作,方便管理和操作数据。 使用Flask开发的后台小程序有以下优点:开发速度快、易于扩展、灵活性高。Flask的简洁和易用性,使得开发人员可以快速搭建后台系统,并且根据需求进行自定义扩展。同时,Flask的灵活性也使得开发者可以根据实际需求,选择适合的插件和工具,进一步完善系统功能。 总而言之,Flask后台小程序是一种快速、灵活、功能强大的后台服务程序,可以用于实现各种功能,并且便于扩展和维护。无论是大型项目还是小型应用,Flask都是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值