PythonWeb开发基础教程 第5章 视图.pdf
《PythonWeb开发基础教程 第5章 视图.pdf》由会员分享,可在线阅读,更多相关《PythonWeb开发基础教程 第5章 视图.pdf(40页珍藏版)》请在咨信网上搜索。
1、Python Web开发基础教程(Dj angol)第5章视图|3疆 霰赞洪胆黑巧用中度再累蜘衾:e 内容,不看Web页面最决童旭时建用泵产生成城应 一其他文档中显示响应好果。本章主要内容:定义视图,处理请求和响应,在视图中使用模型,基于类的视图5.1 定义视图 Dj ango电视图也可根为视督函数处用Python回数来定义视图。初图函接受Web备录,词数迟忸后谕息响应也容。里应灯内容可以是网页的HTML代码、XML文档、图像或者其他 瑙式而内容。视图函数代码文件称为视图文件,文件名按惯例使用views.py,当然也可以使用其他的文件名。视图文件放在项目的同名子文件夹或项目的应用文件夹中。本节
2、主要内容 定义和使用视图 返回错误 处理Http404异常5.1.1定义和使用视定义视图指在视图文件中实现完成业务逻辑处理的函数。,例虬下额代码中的showData函数在Web页面中显示当前日期 和从URL欧径中获取的数据。#chapter5chapter5views.py from dj ango.http import HttpResponse from datetime import date def showData(request,urlData):d=date.today()s=URL路径中的数据:%s当前日期:%s%(urlData,d)return HttpResponse(s
3、)完成视图函数定义后,在URL配置文件中配置URL来访问 该面卷示例代码如下。#chapter5chapter5urls.py from dj ango.urls import path from.import views#导入视图模块 urlpatterns=path(,test,views.showData)#URL 映射到视图函数 5.1.2返回错堤.Django nJ fl40 HTTP状态码和状态描述信息。,正常情况下,视图函数返回的HttpResponsef象的状 态代码为200,表示服务器正确处理了响应。-Django3提供了 一系列pResponse子类来返回各种 HTTP响应
4、,如表5-1所示。表 5-1 HttpResponse 子类HttpResponse 子类HTTP状态码说明HttpResponseRedirect302重定向到指定URL。HttpResponsePermanentRedirect301返回永久重定向。HttpResponseNotModified3。4表示自上次请求以来未修改页面。HttpResponseBadRequest4。0表示请求有错误。HttpResponseNotFound4。4HttpResponseForbidden4。3表示禁止访问请求的内容。HttpResponseNotAllowed4。5表示禁止使用指定的请求方法。H
5、ttpResponseGone4io表示访问请求的内容已经不存在。HttpResponseServerError5。0表示发生服务器内部错误。5.1.3处理Http404异常 HTTP 404错误表示服务器未找到客户请求的内容,这是最常见的HrTP错误。为了方便用户处理HTTP404错误,Dj ango提供了一个Http404异常类。.可在代代中用raise语句抛出Http404异常,示例代码如下。#chapter5chapter5views.py from dj ango.http import Http404 from dj ango.http import HttpResponsedef
6、 testHttp404(request):raise Http404(S:没有找到你需要的内容!)return HttpResponsefok)相应的URL配置如下:path(1 test4041,views.testHttp404),5.2处理请求和响应 Dj ango使用HttpRequest对象处理HTTP请求,使用HttpResponse对象处理HTTP响应。HttpRequest和HttpResponse类在dj ango.http模巾定义。,接收到客户端响应时,Dj ango首先创建一个HttpRequest对象,该对象封装了请求相关 的数据。然后Dj ango调用匹配的视图函数
7、,符HttpRequest对象传递给视图困数的第一 个参数。视图函数负责返回一个HttpResponse对象,该对象封装了响应相关的数据。本节主要内容 获取请求数据 生成PDF文件 处理响应内容 返EIJSON字符串 文件附件 使用响应模板 生成CSV文件 重定向5.2.1获取请求数据可用HttpRequest对象的下列属性获取客户端的请求数据。-GET:返回一个类字典的对象,它若装了客户端使用GET方法上传的数据。POST:返回一个类字典的对象,它若装了客户端使用POST方法上传的数据。-FILES:返回一个类字典的对象,它若装了客户端上传的所有文件。例如,下面的代码在浏览器中输出URL中包
8、含的数据。#chapter5chapter5views.py from dj ango.http import HttpResponsedef showGetData(request):s请求上传的数据:姓名二%s,年龄二s1(request.GETfnamelrequest.GETtage1)return HttpResponse(s)5.2.2处理喟应内容HttpResponse构造函数使用一个字符串参数来构造响应内容,示例代码如下。return HttpResponse(-级标题).默认情况下入电原内用日电1/1日 contentj ype参舞山直为谷类型成理界想电回京侬各式的响应内容,
9、可用 M,示例长4如下。return HttpResponse(-l,content_type=,ltext/plain;charset=utf-8)“text/plain”表示内容为纯文本,“charset=utf-8”设置了内容的字符集。,以使用write。函数向HttpResponse M象添加内容,示例代码如下。#chapter5chapter5views.py from dj ango.http import HttpResponsedef showSomething(request):r=HttpResponse(-级标题 content_type=,text/plain;char
10、set=utf-8,1)r.wite(kp 第二)r.writeCthree1)return r5.2.3文件附件 Dj ango允许将呵应内容c。湎.渗螂面器配般需豆返除需脐件附件需要设置#chapter5chapter5views.py def downloadFile(request):r=HttpResponse(文件内容,content_type=text/text;charset=utf-8)rtContent-Disposition1=attachment;filename=test.txt r.write(ntest)return r Content-Disposition头中
11、的attachment表示内容作为附件传递,filename设置默认文件 名。,相应的URL配置如下:pathCdown1,views.downloadFile),5.2.4生成CSV文件使用Python的csv库,可以生成CSV格式的文件。生成CSV文件的基本步骤如下。(1)创建 HttpResponse对象,并设 Scontentj ype Content-Disposition0(2)W HttpResponse对象作为csv.writer。的参数,创建CSV生成器。(3)调用CSV生成器的 wHterow。、writerows()等方法向 HttpResponse对 象写入数据。(4)
12、1 回 HttpResponse 对象。5.2.5生成PDF文件使用第三方的开源Python库ReportLab,可以在Dj ango视图中 动态生成PDF文件。在Windows命令窗口中执行下面的命令安装ReportLvb库。D:pip install reportlab面的代码使用ReportLab库生成PDF文件。#chapter5chapter5views.pydef writepdf(request):from reportlab.lib.units import cmfrom reportlab.pdfbase.ttfonts import TTFontfrom reportlab
13、.pdfbase import pdfmetricsfrom reportlab.pdfgen import canvasfrom reportlab.lib.colors import redresponse=HttpResponse(content_type=application/pdf)response Content-Disposition=attachment;filename=data.pdf,pdfmetrics.registerFonVTTFontCsongti/simsun.ttc)#注册中文字体,其文件在当前视图文件目录c=canvas.Canvas(response,p
14、agesize=(10*cm,5*cm)#生成指定大小的 PDF 布c.setFont(songti1,18)#设置注册的中文字体,以便正常显示汉字c.setFillColor(red)#设置颜色c.drawString(0.5*cm,4*cm,Python Dj ango Web 简明教程)#在指定位置输出字符串c.showPage()#结束当前页面c.save()#保存画布5.2.6返回JSON字符用 JsonResponseHttpResponse子类,用于封装JSON字符串响应,它符 Content-Type 的标 设置为 application/j son。例如,下面的代码向客户端返
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PythonWeb开发基础教程 第5章 视图 PythonWeb 开发 基础教程
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【曲****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【曲****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。