《Python程序设计》第11章 Web应用_第1页
《Python程序设计》第11章 Web应用_第2页
《Python程序设计》第11章 Web应用_第3页
《Python程序设计》第11章 Web应用_第4页
《Python程序设计》第11章 Web应用_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

口令:RAPID708第11章Web应用学习目标了解Web相关基础理论知识。熟悉WSGI接口的使用。掌握Flask框架的使用。掌握MVC模式的使用。Web基础Web应用开发中,服务器将网页数据信息(HTML代码)传送给浏览器,浏览器进行显示,浏览器和服务器之间传输协议是HTTP。HTML就是网页,网页中不但包含文字、图片、视频、Flash小游戏,还有复杂的排版、动画效果等,所以HTML定义一套语法规则,告诉浏览器如何把丰富多彩的页面显示出来。HTML编写网页<html><head><title>Hello</title></head><body><h1>Hello,Python!</h1></body></html>Web基础CSS是CascadingStyleSheets(层叠样式表)的简称,CSS控制HTML里的所有元素如何展现,将代码CORE1101修改。<html><head><title>Hello</title><style>h1{color:#333333;font-size:40px;text-shadow:3px3px3px#666666;}</style></head><body><h1>Hello,Python!</h1>Web基础JavaScript作用是让HTML具有交互性而作为脚本语言添加的,JavaScript既可以内嵌到HTML中,也可以从外部链接到HTML中。<html><head><title>Hello</title><style>h1{color:#333333;font-size:40px;text-shadow:3px3px3px#666666;}</style><script>functionchange(){document.getElementsByTagName('h1')[0].style.color='#ff0000';}</script></head><body><h1onclick="change()">Hello,Python!</h1></body></html>WSGI接口为了方便操作,事先将HTML文件保存,然后用搭建的HTTP服务器接收请求,从文件中读取HTML发送给浏览器,这些都属于静态服务器。如果想动态生成HTML,上述步骤都需要手动操作完成。例如,接收、解析HTTP请求、发送HTTP数据等,这些都相当繁琐的操作。所以PythonWeb开发的方便之处在于不需要进行底层的配置,使用统一的WSGI接口就可以进行Web开发。WSGI:WebServerGatewayInterface。WSGI接口使用“start_response()”函数便可以响应HTTP请求。defapplication(environ,start_response):start_response('200OK',[('Content-Type','text/html')])return[b'<h1>Hello,Python!</h1>']WSGI接口函数WSGI接口WSGI服务器fromwsgiref.simple_serverimportmake_server#创建一个服务器,IP地址为空,端口是9000,处理函数是applicationhttpd=make_server('',9000,application)print('ServingHTTPonport9000...')#开始监听HTTP请求httpd.serve_forever()Flask框架WSGI是针对每个HTTP请求进行响应,处理较为复杂的Web应用程序,仅用WSGI函数处理太底层了,所以需要在WSGI上再抽象出Web框架,进一步简化Web开发。fromflaskimportFlaskfromflaskimportrequestapp=Flask(__name__)@app.route('/',methods=['GET','POST'])defhome(): #首页return'<h1>测试主页</h1>'@app.route('/signin',methods=['GET'])defsignin_form(): #登录页return'''<formaction="/signin"method="post"><p><inputname="username"></p><p><inputname="password"type="password"></p><p><buttontype="submit">SignIn</button></p></form>'''@app.route('/signin',methods=['POST'])defsignin(): #处理登录表单#需要从request对象读取表单内容:ifrequest.form['username']=='admin'andrequest.form['password']=='admin':return'<h3>输入正确!</h3>'return'<h3>输入错误!</h3>'if__name__=='__main__':app.run()MVC模式MVC(Model-View-Controller):也就是“模型-视图-控制器”。Model用来传给View,View在替换变量时,可以从Model中获取相应的数据。包含变量{{name}}的模板就是V(View),View负责显示逻辑,通过替换变量,View最终输出的就是看到的HTML。Python处理URL的函数就是C(Controller),Controller负责业务逻辑,例如,检查用户名是否存在,取出用户信息等。使用MVC模式,需要预先建立HTML文档,该文档嵌入了变量和指令,传入数据后,进行替换得到最终的HTML,将其发送给用户。MVC模式fromflaskimportFlask,request,render_templateapp=Flask(__name__)@app.route('/',methods=['GET','POST'])defhome():#首页returnrender_template('home.html')@app.route('/signin',methods=['GET'])defsignin_form():#登录页returnrender_template('form.html')@app.route('/signin',methods=['POST'])defsignin():#处理登录表单username=request.form['username']password=request.form['password']ifusername=='admin'andpassword=='password':returnrender_template('signin-ok.html',username=username)returnrender_template('form.html',message='Badusernameorpassword',username=username)if__name__=='__main__':app.run()MVC模式编写网页MVC模式首页代码<html><head><title>Home</title></head><body><h1style="font-style:italic">Home</h1></body></html>MVC模式登陆页代码<html><head><title>PleaseSignIn</title></head><body>{%ifmessage%}<pstyle="color:red">{{message}}</p>{%endif%}<formaction="/signin"method="post"><legend>Pleasesignin:</legend><p><inputname="username"placeholder="Username"value="{{username}}"></p><p><inputname="password"placeholder="Password"type="password"></p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论