1、信息技术(必修2) 信息系统与社会 网络应用软件开发网络应用软件开发 第第2课时课时 Python中常用的Web应用框架 编写网络应用程序首先要确定相应的Web应用框架,在 Python中常用的Web应用框架有Flask、Django及Tronado,其中 Flask Web框架非常精简,属于小型框架。 Flask Web框架具有一个包含基本服务的核心,并且是一个可 扩展的框架,很多功能可以通过扩展来实现。它允许开发者任意 挑选符合项目需求的扩展,甚至可以自行开发。 编写网络应用程序 使用Flask Web框架编写网络应用流程 编写网络应用程序 编写网络应用程序 当用户在浏览器中向Web服务器
2、发出请求时,Web服务器会把请求发送给Flask应 用实例,如上面的APP。那么应用实例是如何知道每个URL与哪些Python代码相关联 并运行的呢?Flask是通过路由和视图函数的方法来解决这个问题的。上述代码中的“ app.route(7)”与“index()”就是一对路由和视图函数,而路由又与URL相关联,如网 站为,当用户访问网页http:/ 被运行。具体如图2.6.7所示。 编写网络应用程序 编写网络应用程序 在Flask框架中Web服务器是自带的,调用应用实例APP的run方法就会启动该 集成的开发Web服务器,服务器启动后就会进入轮询状态,等待用户访问并 处理用户请求,直到程序停
3、止。“_name_=_main_”是确保只有当直接执 行这个脚本时才启动开发Web服务器,如:Python web.py。 编写网络应用程序 上面的Web应用只实现了单一文本的输出,这与 “网络聊天机器人”应用相去甚远。 如果要开发“网络聊天机器人”,须在原有的 Web应用程序的基础上解决两个问题:一是机器 人对话能力的实现;二是网页上的输入与输出。 编写网络应用程序 第一个问题可以通过导入AIML模块来解决。AIML(Artificial Intelligence Markup Language)即人工智能标记语言,本模块由理查华莱士(Richard Wallace)发明。目前 AIML已经
4、有了Java、Python、C、C#及Pascal等语言的版本,该模块的Python版本可 以用来解决问题。 第二个问题可以通过在网页中使用提交表单来解决。表单收集用户的聊天语 句,提交至Web服务器,然后由Web服务器中的aiml调用respond接口处理这些语句, 最后将机器人的回复(即处理结果)发送至访问者的浏览器并输出。要在Flask Web应 用程序中使用表单则必须导入fflask_wtf扩展的FlaskForm模块。同时为了使代码更 加精简,可以使用网页模板,则必须导入Flask的render_template模块。 调试发布 一般情况下,程序在编写过程中难免会出现错误,需要进行调
5、试、 修正错误。错误一般包括两类:一类是相对简单的语法错误,在 程序执行时Python会检查出相应的错误并给出修改建议;另一类 是相对复杂的逻辑错误,需要编程人员仔细研究和分析。调试结 束后,在确保应用能正确运行的情况下,才能将其发布至服务器, 供用户使用。 1.调试模式 Flask Web框架提供了一个称为调试模式的功能,只要在开发配 置或程序代码中设置debug=True就能打开调试功能。 2.应用发布 当Web应用程序通过调试并修改完善后,最后就是投入实际应用 了,在开发环境中我们只需要通过如下命令就可以启动Web应用, 以供他人访问使用。 但这是Flask Web框架自带的开发Web服务器,它仅供开 发者调试使用,本身不够强健、安全和高效,同时也没 有顾及实际应用中随着用户数量增加而产生的性能问题, 因此不适合作为实际生产环境使用。在实际生产环境中 常见的可靠的Web服务器有很多,如IIS、Apache、 Nginx、Tomcat及WebLogic等,只需将自己编写的Web 应用程序以WSGI应用或CGI形式发布至相应的Web服务 器即可。 好好学习,天天向上好好学习,天天向上