PythonWeb开发基础教程-第5章-视图课件.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《PythonWeb开发基础教程-第5章-视图课件.pptx》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PythonWeb 开发 基础教程 视图 课件
- 资源描述:
-
1、Python Web开发基础教程(Django版)第5章 视图视图(View)是Django的MTV架构中的重要组成部分,它实现业务逻辑处理,决定如何处理用户请求和生成响应内容,并在Web页面或其他文档中显示响应结果。本章主要内容:定义视图 处理请求和响应 在视图中使用模型 基于类的视图5.1 定义视图 Django的视图也可称为视图函数,即用Python函数来定义视图。视图函数接受Web请求,函数返回值就是响应内容。响应的内容可以是网页的HTML代码、XML文档、图像或者其他格式的内容。视图函数代码文件称为视图文件,文件名按惯例使用views.py,当然也可以使用其他的文件名。视图文件放在项
2、目的同名子文件夹或项目的应用文件夹中。本节主要内容 定义和使用视图 返回错误 处理Http404异常5.1.15.1.1定义和使用视图定义和使用视图 定义视图指在视图文件中实现完成业务逻辑处理的函数。例如,下面代码中的showData函数在Web页面中显示当前日期和从URL路径中获取的数据。#chapter5chapter5views.py from django.http import HttpResponse from datetime import date def showData(request,urlData):d=date.today()s=URL路径中的数据:%s当前日期:%s
3、%(urlData,d)return HttpResponse(s)完成视图函数定义后,在URL配置文件中配置URL来访问该函数示例代码如下。#chapter5chapter5urls.py from django.urls import path from.import views#导入视图模块 urlpatterns=path(test,views.showData)#将URL 映射到视图函数 5.1.25.1.2返回错误返回错误Django可以返回HTTP状态码和状态描述信息。正常情况下,视图函数返回的HttpResponse对象的状态代码为200,表示服务器正确处理了响应。Django
4、还提供了一系列HttpResponse子类来返回各种HTTP响应,如表5-1所示。表5-1HttpResponse子类HttpResponse子类子类HTTP状态码状态码说明说明HttpResponseRedirect302重定向到指定URL。HttpResponsePermanentRedirect301返回永久重定向。HttpResponseNotModified304表示自上次请求以来未修改页面。HttpResponseBadRequest400表示请求有错误。HttpResponseNotFound404表示未找到请求的内容。HttpResponseForbidden403表示禁止访问
5、请求的内容。HttpResponseNotAllowed405表示禁止使用指定的请求方法。HttpResponseGone410表示访问请求的内容已经不存在。HttpResponseServerError500表示发生服务器内部错误。5.1.35.1.3处理处理Http404Http404异常异常 HTTP 404错误表示服务器未找到客户请求的内容,这是最常见的HTTP错误。为了方便用户处理HTTP 404错误,Django提供了一个Http404异常类。可在代码中用raise语句抛出Http404异常,示例代码如下。#chapter5chapter5views.py from django.
6、http import Http404 from django.http import HttpResponse def testHttp404(request):raise Http404(亲:没有找到你需要的内容!)return HttpResponse(ok)相应的URL配置如下:path(test404,views.testHttp404),5.2处理请求和响应 Django使用HttpRequest对象处理HTTP请求,使用HttpResponse对象处理HTTP响应。HttpRequest和HttpResponse类在django.http模块中定义。接收到客户端响应时,Djang
7、o首先创建一个HttpRequest对象,该对象封装了请求相关的数据。然后Django调用匹配的视图函数,将HttpRequest对象传递给视图函数的第一个参数。视图函数负责返回一个HttpResponse对象,该对象封装了响应相关的数据。本节主要内容 获取请求数据 处理响应内容 文件附件 生成CSV文件 生成PDF文件 返回JSON字符串 使用响应模板 重定向5.2.1获取请求数据 可用HttpRequest对象的下列属性获取客户端的请求数据。GET:返回一个类字典的对象,它封装了客户端使用GET方法上传的数据。POST:返回一个类字典的对象,它封装了客户端使用POST方法上传的数据。FIL
8、ES:返回一个类字典的对象,它封装了客户端上传的所有文件。例如,下面的代码在浏览器中输出URL中包含的数据。#chapter5chapter5views.py from django.http import HttpResponse def showGetData(request):s=请求上传的数据:姓名=%s,年龄=%s%(request.GETname,request.GETage)return HttpResponse(s)5.2.25.2.2处理响应内容处理响应内容 HttpResponse构造函数使用一个字符串参数来构造响应内容,示例代码如下。return HttpResponse
9、(一级标题)默认情况下,响应内容为HTML格式。如果想返回其他格式的响应内容,可用content_type参数设置内容类型以及字符集,示例代码如下。return HttpResponse(一级标题,content_type=text/plain;charset=utf-8)“text/plain”表示内容为纯文本,“charset=utf-8”设置了内容的字符集。以使用write()函数向HttpResponse对象添加内容,示例代码如下。#chapter5chapter5views.py from django.http import HttpResponse def showSomethi
10、ng(request):r=HttpResponse(一级标题,content_type=text/plain;charset=utf-8)r.write(第二段)r.write(three)return r5.2.35.2.3文件附件文件附件 Django允许将响应内容以文件附件的形式返回。要返回文件附件,需要设置content_type参数和Content-Disposition标头,示例代码如下。#chapter5chapter5views.py def downloadFile(request):r=HttpResponse(文件内容,content_type=text/text;ch
11、arset=utf-8)rContent-Disposition=attachment;filename=test.txt r.write(ntest)return r Content-Disposition标头中的attachment表示内容作为附件传递,filename设置默认文件名。相应的URL配置如下:path(down,views.downloadFile),5.2.45.2.4生成生成CSVCSV文件文件使用Python的csv库,可以生成CSV格式的文件。生成CSV文件的基本步骤如下。(1)创建HttpResponse对象,并设置content_type和Content-Disp
12、osition。(2)将HttpResponse对象作为csv.writer()的参数,创建CSV生成器。(3)调用CSV生成器的writerow()、writerows()等方法向HttpResponse对象写入数据。(4)返回HttpResponse对象。5.2.55.2.5生成生成PDFPDF文件文件 使用第三方的开源Python库ReportLab,可以在Django视图中动态生成PDF文件。在Windows命令窗口中执行下面的命令安装ReportLab库。D:pip install reportlab面的代码使用ReportLab库生成PDF文件。#chapter5chapter5v
13、iews.pydef writepdf(request):from reportlab.lib.units import cm from reportlab.pdfbase.ttfonts import TTFont from reportlab.pdfbase import pdfmetrics from reportlab.pdfgen import canvas from reportlab.lib.colors import red response=HttpResponse(content_type=application/pdf)responseContent-Dispositio
14、n=attachment;filename=data.pdf pdfmetrics.registerFont(TTFont(songti,simsun.ttc)#注册中文字体,其文件在当前视图文件目录 c=canvas.Canvas(response,pagesize=(10*cm,5*cm)#生成指定大小的PDF画布 c.setFont(songti,18)#设置注册的中文字体,以便正常显示汉字 c.setFillColor(red)#设置颜色 c.drawString(0.5*cm,4*cm,Python Django Web简明教程)#在指定位置输出字符串 c.showPage()#结束
15、当前页面 c.save()#保存画布 return response5.2.65.2.6返回返回JSONJSON字符串字符串 JsonResponse是HttpResponse的子类,用于封装JSON字符串响应,它将Content-Type的标头设置为application/json。例如,下面的代码向客户端返回一个JSON字符串。#chapter5chapter5views.py def writejson(request):r=HttpResponse(content_type=application/json;charset=utf-8)r.write(name:张三,data:123,
展开阅读全文