浙教版(2019)信息技术 必修2 2.6.3 网络应用软件开发——编写网络应用程序 课件(24张ppt )+教案

文档属性

名称 浙教版(2019)信息技术 必修2 2.6.3 网络应用软件开发——编写网络应用程序 课件(24张ppt )+教案
格式 zip
文件大小 1.4MB
资源类型 教案
版本资源 浙教版(2019)
科目 信息技术(信息科技)
更新时间 2021-01-22 16:15:13

文档简介

(共24张PPT)
必修2《信息系统与社会》
第二章
信息系统的支撑技术
2.6.3
编写网络应用程序
问题引入
问题一
问题二
问题三
情境导入
问题引入
返回
B/S架构的网络应用,客户端无需专门的应用程序,用户工作界面通过WWW浏览器来实现,应用程序基本上都集中于服务器端。它与常见的应用程序有很大的不同,请思考下列问题:
问题一
返回
1、当用户通过浏览器访问服务器端资源时,网络应用如何获得浏览器的请求?
2、网络应用是如何获取用户输入信息的,它与普通本机应用有何区别?
3、网络应用如何将处理结果转化为网页形式,并返回给浏览器?
问题二
返回
1、当用户通过浏览器访问服务器端资源时,网络应用如何获得浏览器的请求?
2、网络应用是如何获取用户输入信息的,它与普通本机应用有何区别?
3、网络应用如何将处理结果转化为网页形式,并返回给浏览器?
问题三
返回
1、当用户通过浏览器访问服务器端资源时,网络应用如何获得浏览器的请求?
2、网络应用是如何获取用户输入信息的,它与普通本机应用有何区别?
3、网络应用如何将处理结果转化为网页形式,并返回给浏览器?
Python常见的Web应用框架
Flask
Flask是一个使用
Python
编写的轻量级
Web
应用框架。其
WSGI
工具箱采用
Werkzeug
,模板引擎则使用
Jinja2
。Flask使用
BSD
授权。Flask也被称为
“microframework”
,因为它使用简单的核心,用
extension
增加其他功能。Flask没有默认使用的数据库、窗体验证工具,然而Flask保留了扩增的弹性,可以用Flask-extension加入这些功能:ORM、窗体验证工具、文件上传、各种开放式身份验证技术。
Django
Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,模板T和视图V。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Django
Reinhardt来命名的。Django
框架的核心组件有:1、用于创建模型的对象关系映射;2、为最终用户设计的完美管理界面;3、一流的
URL
设计;4、设计者友好的模板语言;5、缓存系统。
Tronado
Tornado是一种
Web
服务器软件的开源版本。Tornado
和现在的主流
Web
服务器框架(包括大多数
Python
的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。得利于其非阻塞的方式和对epoll的运用,Tornado
每秒可以处理数以千计的连接,因此
Tornado
是实时
Web
服务的一个理想框架。
Web应用程序编写流程
from
flask
import
Flask
app
=
Flask(__name__)
@app.route('/')
def
index():
return
'我的第一个Web程序!'
if
__name__
==
'__main__':
app.run()
URL、路由和视图函数关联图
Web应用实例
from
flask
import
Flask
app
=
Flask(__name__)
@app.route('/')
def
index():
return
'我的第一个Web程序!'
if
__name__
==
'__main__':
app.run()
实践体验
单机版聊天机器人对话能力的实现通过导入aiml模块来解决。AIML(Artificial
Intelligence
Markup
Language)即人工智能标记语言,本模块由Richard.Wallace发明。目前AIML已经有了Java、Python、C
、C#及Pascal等语言的版本。
任务:小组合作(2人一组),网上搜索AIML相关内容,初步了解AIML的作用及实现方法,搜索在Python中可以使用的AIML库,了解其应用的方法,并最终以PPT的形式进行汇报。最后完成如下的“单机版联天机器人”的代码示例。
实例代码
import
sys
sys.path.insert(0,
"../")
import
aiml
k
=
aiml.Kernel()
k.learn("cn-startup.xml")
k.respond("load
aiml
cn")
k.respond("start")
while
True:
print(k.respond(input(">>")))
实践体验
网络应用的信息输入可以通过表单(Form)实现。表单在网页中用于搜集不同类型的用户输入,要在Flask
Web应用程序中使用表单则必须导入flask_wtf扩展的FlaskForm模块。同时为了使代码更加精简,可以使用网页模板,则需导入Flask的render_template模块。
任务:让学生实践完成“网页表单”的实现代码,并在此代码基础上提出自己的改进方案(如:界面布局改变、输入内容形式改变或界面美化等)。选择1-2个小组介绍自己的成果,进行点评。
网页表单
from
flask
import
Flask,
render_template
from
flask_wtf
import
FlaskForm
from
flask_bootstrap
import
Bootstrap
from
wtforms
import
StringField,SubmitField
from
wtforms.validators
import
DataRequired
app
=
Flask(__name__)
app.config['SECRET_KEY']='xxx_ssss_1276589'
bootstrap
=
Bootstrap(app)
class
NameForm(FlaskForm):
name
=
StringField('你的姓名?',
validators=[DataRequired()])
submit
=
SubmitField('提交')
@app.route('/',
methods=['GET',
'POST'])
def
index():
sname
=
''
myform
=
NameForm()
if
myform.validate_on_submit():
sname
=
myform.name.data
myform.name.data
=
''
return
render_template('showwtfm.html',
form=myform,
name=sname)
if
__name__
==
'__main__':
app.run()
模板
html>
lang="en">

charset="UTF-8">
name="viewport"
content="width=device-width,
initial-scale=1.0">
http-equiv="X-UA-Compatible"
content="ie=edge">
快速窗体

{%
import
"bootstrap/wtf.html"
as
wtf
%}

class="page-header">

你好,{%
if
name
%}{{name}}{%
else
%}世界{%
endif
%}!



{{
wtf.quick_form(form)
}}


实践体验
网络版
将表单输入与AIML库实现在机器人代码整合,最终实现“网络聊天机器人”。它是使用表单收集用户的聊天语句提交至Web服务器,然后由Web服务器中的aiml调用respond接口处理这些语句,最后将aiml机器人的回复(即处理结果)发送至访问者的浏览器并输出。
任务:让学生实践完成“网络聊天机器人”的实现代码。
实践体验
from
flask
import
Flask,
render_template
from
flask_script
import
Server,
Manager
from
flask_bootstrap
import
Bootstrap
from
flask_moment
import
Moment
from
flask_wtf
import
FlaskForm
from
wtforms
import
StringField,
SubmitField
from
wtforms.validators
import
DataRequired
import
sys
sys.path.insert(0,
"../")
import
aiml
k
=
aiml.Kernel()
k.learn("cn-startup.xml")
k.respond("load
aiml
cn")
k.respond("start")
app
=
Flask(__name__)
app.config['SECRET_KEY']
=
'hard
to
guess
string'
实践体验
manager
=
Manager(app)
server
=
Server(host="127.0.0.1",
port=80,
threaded=True)
manager.add_command("runserver",
server)
bootstrap
=
Bootstrap(app)
moment
=
Moment(app)
class
NameForm(FlaskForm):
name
=
StringField('请开始交谈:',
validators=[DataRequired()])
submit
=
SubmitField('提交')
@app.route('/',
methods=['GET',
'POST'])
def
index():
name
=
''
form
=
NameForm()
if
form.validate_on_submit():
name
=
form.name.data
form.name.data
=
''
return
render_template('index.html',
form=form,
name=k.respond(name))
if
__name__
==
'__main__':
manager.run()
实践体验
{%
extends
"bootstrap/base.html"
%}
{%
block
title
%}Flasky{%
endblock
%}
{%
block
head
%}
{{
super()
}}
rel="shortcut
icon"
href="{{
url_for('static',
filename='favicon.ico')
}}"
type="image/x-icon">
rel="icon"
href="{{
url_for('static',
filename='favicon.ico')
}}"
type="image/x-icon">
{%
endblock
%}
{%
block
navbar
%}
class="navbar
navbar-inverse"
role="navigation">
class="container">
class="navbar-header">
type="button"
class="navbar-toggle"
data-toggle="collapse"
data-target=".navbar-collapse">
class="sr-only">Toggle
navigation
class="icon-bar">
class="icon-bar">
class="icon-bar">

class="navbar-brand"
href="/">机器人重启



{%
endblock
%}
base.html
实践体验
{%
block
content
%}
class="container">
{%
block
page_content
%}{%
endblock
%}

{%
endblock
%}
{%
block
scripts
%}
{{
super()
}}
{{
moment.include_moment()
}}
{%
endblock
%}
{%
extends
"base.html"
%}
{%
import
"bootstrap/wtf.html"
as
wtf
%}
{%
block
title
%}聊天机器人{%
endblock
%}
{%
block
page_content
%}
class="page-header">

src="static/robot.png"
/>:{%
if
name
%}{{
name
}}{%
else
%}请说话...{%
endif
%}



{{
wtf.quick_form(form)
}}
{%
endblock
%}
index.html
Web应用框架:
Flask、Django、Tronado
Flask框架
1、导入框架模块,2、创建应用实例,3、编写路由和视图函数,4、启动Web应用。
AIML库、Form
课堂小结
学习评价
对自己和同伴的表现进行客观的评价,并思考后续完善的方向。(5=优秀,4=超出一般水平,3=满意,2=有待改进,1=不太理想)
评分项
自我评价
同学互评
能完成“例1”的代码编写并完成相应的结果呈现
5
4
3
2
1
5
4
3
2
1
能完成“单机版聊天机器人”代码编写并完成相应的结果呈现
5
4
3
2
1
5
4
3
2
1
能完成“网页表单”的并完成相应的结果呈现
5
4
3
2
1
5
4
3
2
1
能完成“网络聊天机器人”代码编写并完成相应的结果呈现
5
4
3
2
1
5
4
3
2
1
作业
1.(开放题)某数据加密方法描述如下:
(1)以字节为单位进行加密处理;
(2)将1个字节的8位二进制数分割成前4位与后4位两个二进制数;
(3)分别将上述两个4位二进制数转换为十进制数;
(4)将每个十进制数转换为1个加密字符,对应的“密码表”如下:
值(十进制)
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
加密字符
I
l
i
k
e
C
H
N
P
0
s
t
c
a
r
d
请设计了一个字符串(仅包含ASCII字符)加密的程序,功能如下:程序依次将文本框中每个字符的ASCII码值作为1个字节转换为两个加密字符,连接这些加密字符,最后在页中输出加密结果。下表显示了字符串中一个字符的加密过程:
m
←转换前字符m
109
←字符m的ASCII码十进制值
0
1
1
0
1
1
0
1
←对应的二进制数
6
13
←分割、转换后的十进制数
H
a
←对应的加密字符
谢谢观看2.6编写网络应用程序
一、教学设计模板
课程标准

教学目标
编写网络应用程序
教材内容:
2.6.3编写网络应用程序
适应的课程标准:
2.5通过分析常见的信息系统,理解软件在信息系统中的作用,借助软件工具与平台开发网络应用软件。
教学目标:
●理解网络应用软件的框架及基本组成结构。
●掌握使用Flask框架编写的网络应用软件的基本方法及步骤。
●了解聊天机器人的实现原理,从而进一步理解网络应用实现的不同之处。
指向的核心素养:
●信息意识:能够按要求获取与处理信息;在合作学习过程中,愿意与团队成员共享信息。
●计算思维:针对给定的网络应用的规划和设计,完成网络应用的代码编写。在此过程中能提炼出应用需求的基本特征,进行抽象处理,并用形式化的方法来表述。
●数字化学习与创新:掌握数字化学习系统,学习资源与学习工具的操作技能,用于开展自主学习、协同工作、知识分享与创新创造。
学习环境:有教学控制软件的多媒体机房,并装有PPT软件。
建议课时:1课时
教学活动设计
教学环节
教学过程
设计意图
情境导入
导入1:B/S架构的网络应用,客户端无需专门的应用程序,用户工作界面通过WWW浏览器来实现,应用程序基本上都集中于服务器端。引导学生思考B/S架构与常见的应用程序的不同之处,并针对以下问题进行讨论、交流和回答。
1、当用户通过浏览器访问服务器端资源时,网络应用如何获得浏览器的请求?
2、网络应用是如何获取用户输入信息的,它与普通本机应用有何区别?
3、网络应用如何将处理结果转化为网页形式,并返回给浏览器?
通过对预设问题的分析及讨论交流启发学生思考,引导学生从网络应用获取请求、获得用户输入及处理后信息的输出等情况出发,归纳总结出网络应用与普通单机运行的应用程序的不同,从而最终引出解决这些编程问题的Web应用框架。同时在此过程中也培养了信息意识。
知识讲解
通过分析上述问题,并在归纳总结学生回答的基础上,以PPT等多媒体投影或板书形式介绍网络应用程序编写的Web应用框架、及Flask框架构建网络应用的步骤及网络应用的编写代码。
I、Python常用的Web应用框架
Flask
Flask是一个使用
Python
编写的轻量级
Web
应用框架。其
WSGI
工具箱采用
Werkzeug
,模板引擎则使用
Jinja2
。Flask使用
BSD
授权。Flask也被称为
“microframework”
,因为它使用简单的核心,用
extension
增加其他功能。Flask没有默认使用的数据库、窗体验证工具,然而Flask保留了扩增的弹性,可以用Flask-extension加入这些功能:ORM、窗体验证工具、文件上传、各种开放式身份验证技术。
Django
Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,模板T和视图V。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Django
Reinhardt来命名的。Django
框架的核心组件有:1、用于创建模型的对象关系映射;2、为最终用户设计的完美管理界面;3、一流的
URL
设计;4、设计者友好的模板语言;5、缓存系统。
Tronado
Tornado是一种
Web
服务器软件的开源版本。Tornado
和现在的主流
Web
服务器框架(包括大多数
Python
的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。得利于其非阻塞的方式和对epoll的运用,Tornado
每秒可以处理数以千计的连接,因此
Tornado
是实时
Web
服务的一个理想框架。
II、Flask框架网络应用编写流程
III、例1网络应用程序代码
from
flask
import
Flask
app
=
Flask(__name__)
@app.route('/')
def
index():
return
'我的第一个Web程序!'
if
__name__
==
'__main__':
app.run()
通过讲授让学生Python中的网络应用框架有一个直观的认识,然后通过实例代码的学习和实践运行,理解和掌握Flask框架在网络应用编写中的流程及具体代码,让学生进一步强化相应知识的掌握,从而实现知识的内化和计算思维的培养。
实践体验(1)
在知识讲解的基础上,进一步提出任务,如何应用Flask框架实现“网络聊天机器人”。
根据“网络聊天机器人”所要实现的功能,可将实现分步进行:1、实现人机对话;2、实现网络功能。
单机版聊天机器人话能力的实现通过导入aiml模块来解决。AIML(Artificial
Intelligence
Markup
Language)即人工智能标记语言,本模块由Richard.Wallace发明。目前AIML已经有了Java、Python、C
、C#及Pascal等语言的版本。
任务:小组合作(2人一组),网上搜索AIML相关内容,初步了解AIML的作用及实现方法,搜索在Python中可以使用的AIML库,了解其应用的方法,并最终以PPT的形式进行汇报。选择1-2个小组介绍自己的成果,进行点评。最后在教师的讲授和指点下完成如下的“单机版联天机器人”的代码示例。
app.py
通过实践任务的布置,促使学生自主学习,推动小组合作完成任务,让学生自主学习理解AIML库的作用,并掌握将AIML库的应用方法,进行“单机版聊天机器人”的代码实现,在实践中进一步对所掌握的知识所进行分类、归纳和验证,形成系统化知识;并通过PPT的汇报,让学生们的信息处理能力有所提升,培养学生数字化学习与创新的核心素养。
实践体验(2)
在“单机版聊天机器人”实践体验的基础上,进一步解决“网络聊天机器人”的网络功能的实现,首先解决输入问题。
网络应用的信息输入可以通过表单(Form)实现。表单在网页中用于搜集不同类型的用户输入,要在Flask
Web应用程序中使用表单则必须导入flask_wtf扩展的FlaskForm模块。同时为了使代码更加精简,可以使用网页模板,则需导入Flask的render_template模块。
首先由教师讲授表单的相关知识,及表单在Python中的代码实现,同时考虑到以单纯的理论讲解让学生认识表单,感觉比较肤浅,印象不深。
任务:让学生实践完成“网页表单”的实现代码,并在此代码基础上提出自己的改进方案(如:界面布局改变、输入内容形式改变或界面美化等)。选择1-2个小组介绍自己的成果,进行点评。
app.py
index.html
本环节让学生从简单的表单形式了解网络应用程序的基本输入方式,从而使学生更好的理解表单的作用及其实现方式。同时通过合作学习,与团队成员共享信息,培养了信息意识的素养。
实践体验(3)
将表单输入与AIML库实现在机器人代码整合,最终实现“网络聊天机器人”。它是使用表单收集用户的聊天语句提交至Web服务器,然后由Web服务器中的aiml调用respond接口处理这些语句,最后将aiml机器人的回复(即处理结果)发送至访问者的浏览器并输出。
任务:让学生实践完成“网络聊天机器人”的实现代码。
webrobot.py
index.html
base.html
本环节让学生将表单与AIML库整合,完成“网络聊天机器人”。使学生进一步理解表单、AIML库的作用,更好的理解网络应用的运行方式,培养学生计算思维的素养。
课堂小结
1.网络应用软件的框架:Flask、Django、Tronado。
2.Flask框架编写的网络应用软件:导入框架模块,创建应用实例,编写路由和视图函数,启动Web应用。
3.AIML库、Form。
通过回顾总结帮助学生掌握网络的构建步骤及其各相关设备的作用,进一步理解信息系统应用的特点及网络在信息系统中所起的作用,提高学习自觉性和热情。
作业布置
基础作业(面向所有学生):
详见课后练习。
提升作业(面向学有余力学生):
请制作一个解决日常问题的网络应用(主题不限)
课后作业是课堂学习的延伸,是巩固和升华知识点的有效途径。根据学生的基础和能力设置不同难度的作业,以满足不同层次的学生需求。
教学设计思路
在教学过程中应充分考虑到学生在实际的学习与生活中使用网络应用的几率远远大于自己编写网络应用,因此需以教师讲授为主并辅以较多的学生实践操作,通过亲身的体验来更好的理解和掌握网络应用编写的方法和步骤,从而起到事半功倍的效果。
首先在教学过程中教师可以先用事先完成的小巧有趣的网络应用进行演示(如百度AI车牌识别等),从而引起学生的学习兴趣;其次由于课本中例1与例2的跨度过大,在完成例1的教学之后可以按以下步骤来实施:
通过先实现单机版的聊天机器人,来让学生掌握AIML模块的使用方法;
讲解浏览器的输入信息的方法-表单,并编写程序实现信息输入;
通过在网页中使用提交表单的方式来实现网络应用的输入用户聊天信息,表单收集聊天语句后提交至Web服务器,再由Web服务器中的aiml调用respond接口处理这些语句,最后将aiml机器人的回复(即处理结果)发送至访问者的浏览器并输出。
这样一来就将AIML处理与网页表单提交相分离,有利于学生的掌握理解。由于在教学内容中涉及到大量的导入库及辅助文档,如:Flask库、AIML库及语料库等,因此教师在课前须提前进行下载与配置,相应的库及文档可以在教学资源网站中下载。在教学过程中主要重点要落实在Web应用程序编写流程(1、导入框架模块,2、创建应用实例,3、编写路由和视图函数,4、启动Web应用)上,让学生掌握网络应用编写的一般步骤和流程。
针对
核心素养培养的
设计考虑
核心素养的培养不可能泛泛而谈,而应落实在每一次引导、每一个活动之中,在仔细分析了本课内容可以融入三类核心素养的培养,并且细致分析了各个核心素养的具体落点:
信息意识的落点在“能够按要求获取与处理信息;在合作学习过程中,愿意与团队成员共享信息。”本课主要是通过对问题的分析及讨论交流启发学生思考,引导学生从网络应用获取请求、获得用户输入及处理后信息的输出等情况出发,归纳总结出网络应用与普通单机运行的应用程序的不同,从而最终引出解决这些编程问题的Web应用框架,培养信息意识。同时通过合作学习,与团队成员共享信息,培养了信息意识的素养。
计算思维指向“针对给定的网络应用的规划和设计,完成网络应用的代码编写。”主要表现为通过讲授让学生掌握使用Flask框架编写网络应用的方法及其流程,并将所学知识应用于实践,进行“单机版聊天机器人”、“网页表单”及“网络聊天机器人”的代码编写,在实践中进一步对所掌握的知识所进行分类、归纳和验证,形成系统化知识;在此过程中能提炼出Flask框架编写网络应用需求的方法,进行抽象处理,并用形式化的方法来表述,并能将此方法迁移至整个网络应用的编写,培养计算思维能力。
数字化学习与创新的落点在“掌握数字化学习系统,学习资源与学习工具的操作技能,用于开展自主学习、协同工作、知识分享与创新创造”。在AIML库的学习及“网页表单”的实践中,学生要使用搜索引擎查询相关资源;在展示各小组的学习成果时,学生要PPT进行汇报;同时开展自主学习和协同工作,并能在解决问题的过程中提出合理方法,提升数字化学习与创新的核心素养。
点击下载
同课章节目录