ImageVerifierCode 换一换
格式:PDF , 页数:40 ,大小:913.31KB ,
资源ID:225115      下载积分:19 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/225115.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
声明  |  会员权益     获赠5币     写作写作

1、填表:    下载求助     留言反馈    退款申请
2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【曲****】。
6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
7、本文档遇到问题,请及时私信或留言给本站上传会员【曲****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

注意事项

本文(PythonWeb开发基础教程 第5章 视图.pdf)为本站上传会员【曲****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

PythonWeb开发基础教程 第5章 视图.pdf

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。例如,下面的代码向客户端返

15、回一个JSON字符串。#chapter5chapter5views.py def writej son(request):r=HttpResponse(content_type=application/j son;charset=utf-811)r.write(naine?张 H/datall23,abc)return r修改writej son函数,使用JsonResponse封装响应代码如下。from dj ango.http import JsonResponsedef writej son(request):return JsonResponseGname1:1 HVdataS/abc

16、1)5.2.7使用喟应模板直接在视图中通过代码招内容写入响应,如果后期需 要更改输出布局,则需要重新修改视图代码。这显然 不利于代码维护。-使 1 django.template.response1块中的 TemplateResponse,而以便M展板耒定义输出布局。5.2.8重定向dj ango.shortcuts模块中的redirect()方法用于快速创建重定向,其基本格式为:redirect(to,*args)参数口可以是模型中返IUURL的方法、视图名称或URL。例如:#chapter5chapter5views.pyfrom dj ango.shortcuts import redi

17、rectdef useRedirect(request):return redirect(showData,uHDataei23)#重定向到5.1.1 中定义的视图函数showData5.3在视图中使用模型视图不仅可以获取客户端上传的数据,还可以通过模 型访问后台的数据库本节主要内容在视图中输出模型数据数据分页5.3.1在视图中输出模型数据具体操作步骤如下。(1)在项目子文件夹chapte5中添加一个文件,命名为modes.py,在其中定义模型,代码如下。(2)在Windows命令窗口中执行下面的命令完成数据库if移操作。(3)解阳见图文件,定义一个函数符URL中的数据添加到数据库的user表

18、,并将user表中的全 部教辅返向客户端,代硝lU下。(4)修改urls.py,添加访问视图的URL配置,代码如下。(5)启动开发服务器。5.3.2数据分页-django.core.paginatori 块中的 Paginator 用于实现数 据分页。1.Paginato对象Paginator()构造函数用于创建Paginator对象(称为分页器),其基本格式如下。from dj ango.core.paginator import Paginator paginator=Paginator(obj ect_list,per_page,orphans=0,allow_empty_first_p

19、age=True)各参数含义如下:嚼徵力肥肥常膈那例鬣元组、列表或者其他可分片对象-per_page:每页中允许的最大对象数。必选参数。orphans:,:理于控制最后一页的对象数。如果剩余的对象数i于或等于orphans值,则这些对秦将被添加到上一页面,并使其成为最后一页。另选参薮二二二一,默认值为0。-allow_empty_first_page:是否允许第一页为空。可选参数,默认值为True,即允许 第一页为空。Paginator对象的常用属性如下。,count:返回所有页面中的对象总数。-num_pages:返回总页数。page_range:返回页码迭代器,页码从1开始。例如:from

20、 dj ango.core.paginator import Paginator obj ects=labc,ldef,lghi,123,456,789#侍分页对象集合-p=Paginator(obj ects,2)#构造分页器,每页2个对象 p.count 6 p.num_pages-3 p.page_range range(1,4)Paginator对象的常用方法如下。get_page(页码):返回指定页的Page对象,页码从1开始。垓方法 可处理超出范围或无效的页码。如果给定页码不是数字,则返 回第一页。如果给定页码小于1或大于总页数,则返回最后一页。,page(页码):返回指定页的Pa

21、ge对象,它不处理超出范围或无效 页码。指定的页码无效时会触发InvalidPage异常。例如 page1=p.get_page(1)#获取 Page 对象 page2=p.page(2)#获取 Page 对象2.Page对象,Page对象用于处理指定页。通常调用分页器的page。或get_page()方法获 得Page对象。-Page对象的属性如下。-obj ectj ist:返回当前页的对象列表。number:返回当前页的页码。paginator:返回关联的Paginator对象。Page对象的方法如下。has_next():有下一页时迟UlTrue,否则返回False。has_previ

22、ous():有上一页时返回True,否则返回False。has_other_pages():有上一页或下一页时返True,否则返回False。next_page_number():返回下一页的页码。previous_page_number():返回上一页的页码。start i:返回当成页中第匚啜,烫则同对露蝉冤儿索引从 每页包含2个对象,则第一页的1开始。例如龙用嗦成为 start_index()l 03o6,鹘翟掰6嘴曾基聘g2号需暮跚翻/虬o-3.对模型数据分页 5.3.1节中创建了 user模型,其对应的user表数据如图0 127.0.0.1:8000/model?name=X+-C

23、127.0.0.1:8000/model?name=&age=23 X 60默认数据库中的user表数据:id name ageJ三四 张李六七 赵燕2018五525.4基于类的视图基于类的视图指用类实现的视图,可通过定义其子类 进行扩展。,所有基于类的视图都是django.views.View的子类。本节主要内容 使用基于类的视图 设置视图类属性 扩展视图类5.4.1使用基于类的视典型的基于类的视图通常由HTTP请求处理方法实现,其基本结构如下。from dj ango.http import HttpResponsefrom dj ango.views import Viewclass M

24、yViewName(View):#继承 View 类#类的属性定义#类的方法定义def get(self,request):#HTTP GET i青求处理方法#业务遗辑处理代码return HttpResponse(result)def post(self,request):#HTTP POST 请求处理方法#业务遗辑处理代码return HttpResponse(result)1,MyViewName是自定义类的名称,它继承了 dj ango.views.View。get()方法用于处理HTTPGET请求,post。方法用于处理HTTP POST请求。注意,get()和post。的名称必须用

25、视图函数来处理HTTP请求,其基本结构如下。from dj ango.http import HttpResponsedef MyFuncionName(request):#变量定义if request.method=GET:#处理 HTTP GETifi 求#业务辑处理代码return HttpResponse(result)if request.method=POST:#处理HTTP POST#求#业务遢辑处理代码return HttpResponse(result)需躅备鼾URL时,如果URL与模式也配,则调用相应在配置基于类的视图时,需将URL模式映射到视图类需 as_view()方法

26、。Django处理视图类的基本步骤如下。,第一步j执行as_view()方法,倒建一个类的实例。第二步:调用setup。方法初始化实例的属性。,第三步:调用dispatch。方法,南蜀HTTP萌*方式(GET或POST 里)调用匹配的实例方发 如巢系有匹量的实例方法,110 HttpResponseNotAllowed m 应。5.4.2设置视图类属性Dj ango允许在配置基于类的视图时,在as_view()方法中设置视图类的属 性示例代码如下。#chapter5chapter5urls.py uripatterns=path(useviewpaa csrf_exenipt(views.us

27、eClassView.as_view(news=用指定属性值访 问视图类),5.4.3扩展视图类对视图类进行扩展,可重载类的属性和方法,示例代码如下。#chapter5chapter5views.pyfrom dj ango.views import Viewclass useClassView(View):class subClassView(useClassView):news这是视图类useClassView的扩展类!def get(self,request):#重载get()方法out=self.news+重载get()方法输出:请在输入数据后提交!,+self.form return

28、 HttpResponse(out)5.5内置通用视图本节主要内容通用视图DetailView,通用视图ListView5.5.1 通用视图DetaiMew-DetailView用于显示单个模型对象的数据。通常精况下,在URL中向视图提交对象的id,视图使用id获得模型对象,并将模型对 象传递给模板。,例虬 使用DetailView显示user表中特定用户的数据。首先,扩展DetailView类,代码如下。其次,定义模板。默认情况下,DetailView子类使用的模板文件名为“模型名称-detail.htmr5 0本例中使用的模型名称为user,所以默认的模板文件名称为 user_detail

29、.htmlo本例中,项目名称为chapters,Dj ango默认在“chapter5chapter5templateschapter5 目录中搜索 user_detail.html 文件。,最后,配置URL访问userDetailView视图5.5.2 通用视图 ListViewListView用于显示多个模型对象的数据,数据显示格式由模板 定义。本节在实例中使用ListView显示user表的全部数据。首先,犷展ListView类,代码如下:.其次,定义模板。本例中,userListView视图默认使用的模板文件名称 user_list.html,其代码如下:,最后,配置URL访问userListView视图5.6实践:图形校验码本节主要内容

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服