网络编程技术:第5章 PythonWeb编程1_第1页
网络编程技术:第5章 PythonWeb编程1_第2页
网络编程技术:第5章 PythonWeb编程1_第3页
网络编程技术:第5章 PythonWeb编程1_第4页
网络编程技术:第5章 PythonWeb编程1_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

第5章PythonWeb开发(1)5.1CGI、FastCGI与WSGI5.2Python

Web开发框架5.3Django安装与使用5.1CGI、FastCGI与WSGI静态文件资源Web服务器HTTP静态网站如何根据用户请求返回动态信息?5.1CGI、FastCGI与WSGIWeb服务器HTTPCGI:通用网关接口(Common

Gateway

Interface)CGI就像是一座桥,把网页和WEB服务器中的执行程序连接起来,CGI使网页变得不是静态的,而是交互式的。CGI应用程序5.1CGI、FastCGI与WSGI5.1CGI、FastCGI与WSGICGI脚本工作流程浏览器通过HTML表单或超链接请求指向一个CGI应用程序的URL。服务器收发到请求。服务器执行所指定的CGI应用程序。CGI应用程序执行所需要的操作,通常是基于浏览者输入的内容。CGI应用程序把结果格式化为网络服务器和浏览器能够理解的文档(通常是HTML网页)。网络服务器把结果返回到浏览器中。5.1CGI、FastCGI与WSGICGI应用程序和典型的应用程序主要区别在于输入、输出以及用户和计算机交互方面CGI程序的输入是用户表单,输出是连接的Web客户端,而不是返回到屏幕,这些返回的数据必须是一系列有效头文件的HTML。CGI程序不直接和用户发生交互,所有的交互发生在Web客户端、Web服务器端和CGI应用程序之间。5.1CGI、FastCGI与WSGI开发CGI应用程序的编程语言Perl、PHP、C/C++、Python……CGI应用程序和典型的应用程序主要区别在于输入、输出以及用户和计算机交互方面CGI程序的输入是用户表单,输出是连接的Web客户端,而不是返回到屏幕,这些返回的数据必须是一系列有效头文件的HTML。CGI程序不直接和用户发生交互,所有的交互发生在Web客户端、Web服务器端和CGI应用程序之间。5.1CGI、FastCGI与WSGI可以使用Web服务器(如Apache)+PythonCGI程序的方式完成Web开发也可以使用Python自带的Web服务器+PythonCGI的方式启动Python自带的Web服务器命令$python–mCGIHTTPServer注:本命令将以当前路径为根路径建立一个端口号为8000的Web服务器,只需在当前路径下建立一个Cgi-bin目录,并将PythonCGI脚本放在那里,就可以访问CGI了。5.1CGI、FastCGI与WSGI示例:建立D:/Cgi-bin目录,开启命令行并输入D:并回车,进入到D盘根目录,输入命令启动python自动web服务器python–mCGIHTTPServer编写hellocgi.py文件,内容如下页,把hellocgi.py文件放置于D:/Cgi-bin然后打开浏览器,在地址栏中输入::8000/cgi-bin/hellocgi.py?a=15.1CGI、FastCGI与WSGI编写hellocgi.py文件,内容如下,把hellocgi.py文件放置于D:/Cgi-binimportcgi

reshtml='''Content-Type:text/html\n

<html>

<head><title>helloworldCGI</title></head>

<body>

yourinputis:<B>%s</B>

</body>

</html>''‘

form=cgi.FieldStorage()

a=form['a'].value

printreshtml%(a)5.1CGI、FastCGI与WSGI浏览器输出如下:命令行输出如下:5.1CGI、FastCGI与WSGIcgi模块中的FieldStorage类在PythonCGI脚本开始时这个类会被实例化,它会读出Web客户端提交来的用户信息,它包含一个类似字典的对象,具有一系列的key-value对,key就是通过表单传入的表单条目的名字,value为相应数据form=cgi.FieldStorage()

a=form['a'].value5.1CGI、FastCGI与WSGICgi对于每个用户请求都需要启动一个新进程,效率比较低,逐渐被放弃使用,被一些新的方式所取代Web服务器内置解释器模块:有新的动态请求进来时,web服务器就是自己解析这些perl或php脚本FastCGI:像一个常驻型的CGI,使用持续的进程来处理一连串的请求。这些进程由FastCGI进程管理器管理,原理图见下页。FastCGI是语言无关的、可伸缩架构的CGI开放扩展WSGI:PythonWebServerGatewayInterface,PythonWeb服务器网关接口,目标是要建立一个简单的普遍适用的服务器与WEB框架之间的接口5.1CGI、FastCGI与WSGI5.1CGI、FastCGI与WSGIFastCGI的工作流程WebServer启动时载入FastCGI进程管理器FastCGI进程管理器自身初始化,启动多个CGI解释器进程并等待连接。当客户端请求到达WebServer时,FastCGI进程管理器选择并连接到一个CGI解释器。Webserver将CGI环境变量和标准输入发送到FastCGI子进程FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回WebServer。FastCGI子进程接着等待并处理下一个连接。在CGI模式中,php-cgi在此便退出5.1CGI、FastCGI与WSGIWSGIWSGI将web组件分为三类:web服务器,web中间件,web应用程序wsgi基本处理模式为:WSGIServer->(WSGIMiddleware)*->WSGIApplication。5.1CGI、FastCGI与WSGIWSGIwsgiserver可以理解为一个符合wsgi规范的webserver,接收request请求,封装一系列环境变量,按照wsgi规范调用注册的wsgiapp,最后将response返回给客户端。wsgiapplication就是一个普通的callable对象,当有请求到来时,wsgiserver会调用这个wsgiapp。这个对象接收两个参数,通常为environ,start_response。wsgimiddleware介于服务器程序和应用程序之间,middleware需要把自己伪装成一个服务器,接受应用程序,调用它,同时middleware还需要把自己伪装成一个应用程序,传给服务器程序。5.2Python

Web开发框架5.2Python

Web开发框架框架对比web.py:轻量级的开源PythonWeb框架,小巧灵活web2py:提供一站式的解决方案,整个开发过程都可以在浏览器上进行Flask:也被称为“microframework”,因为它使用简单的核心,用extension增加其他功能。Django:属于Fullstackframework。包括了几乎所有web开发用到的模块。session管理、CSRF防伪造请求、Form表单处理、ORM数据库对象化……5.2Python

Web开发框架官网/Django历史劳伦斯出版集团需要开发一个以新闻内容为主的网站。对于新闻网站来说,需求变化很快,互动性也很高。于是,worldonline的三位工程师使用python开发了Django。Django特点Ridiculouslyfast,快Fullyloaded,全Reassuringlysecure,安全Exceedinglyscalable,可扩展Incrediblyversatile,全能5.3Django安装与使用Django安装使用python的在线安装,pipinstallDjango也可以在安装时指定版本号,如:安装完成后,在Python安装路径下X:\Python27\Lib\site-packages\路径下可以看到django文件夹。在X:\Python27\Scripts\路径下可以看到django项目管理工具:django-admin5.3Django安装与使用

在命令行下执行django项目管理工具django-admin显示如下信息,列表中显示的是支持的命令5.3Django安装与使用

在IDE中创建django工程、django应用等也是执行的django-admin对应的命令例如:django-adminstartproject命令用于创建django工程django-adminstartapp命令用于创建django应用django-adminrunserver命令用于启动运行当前项目5.3Django安装与使用

以使用PyCharmIDE为例创建第一个django项目5.3Django安装与使用输入项目名hellodjango,点击创建后,进入如下界面:5.3Django安装与使用在菜单中选择Run/Runhellodjango,快捷键shift+F10在下方信息窗口中可以看到服务器已运行信息,访问地址是:8000/5.3Django安装与使用打开浏览器,输入地址:8000/,出现如下页面,说明django工程运行成功5.3Django安装与使用在当前的hellodjango工程中创建第一个app,操作步骤如下:执行tools菜单下的runmanage.pytask命令5.3Django安装与使用在当前的hellodjango工程中创建第一个app,操作步骤如下:在下方会出现django项目管理命令输入框在命令提示符后输入startappdemo,创建名为demo的app5.3Django安装与使用在当前的hellodjango工程中创建第一个app,操作步骤如下:此时在项目浏览器里中可以看到新创建的demo,如下图左所示:其中包含文件如下图右所示。5.3Django安装与使用打开hellodjango路径下的urls.py文件在url(r‘^admin/’,include(admin.site.urls)),后面输入url(r‘^$’,‘demo.views.indexpage’),如下图所示:5.3Django安装与使用打开demo路径下的views.py文件在#Createyourviewshere.后面定义函数5.3Django安装与使用打开demo路径下的views.py文件HttpResponse会显示红色错误,原因是没有引入相关的包,在fromdjango.shortcutsimportrender后,输入fromdjango.httpimportHttpResponse,如下图所示:5.3Django安装与使用在菜单中选择Run/Runhellodjango,快捷键shift+F10在浏览器输入:8000/5.3Django安装与使用在demo路径下的views.py文件中继续添加函数defsum(request):

a=request.GET['a']

b=request.GET['b']

reshtml='''<h1>Thesumof%sand%sis%d</h1>'''

returnHttpResponse(reshtml%(a,b,int(a)+int(b)))5.3Django安装与使用打开hellodjango路径下的urls.py文件在url(r‘^$’,‘demo.views.indexpage’),后面输入url(r‘^sum/’,‘demo.views.sum’),如下图

温馨提示

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

评论

0/150

提交评论