7天学习计划之Python网络编程_Django-[第三天]

本文介绍了Django框架中的FBV(Function-based View)视图,详细讲解了如何设置响应方式,包括返回响应、重定向、异常响应和文件下载。同时,还探讨了HTTP请求对象,如GET、POST请求和文件上传的操作。内容覆盖Django的render、redirect函数以及错误处理和文件下载策略。
摘要由CSDN通过智能技术生成

# Python网络编程_Django

路漫漫其修远兮,我将上下而求索



前言

Django是一个开源代码的Web应用框架,采用了MTV模式,即模型(Model)、模板(Template)、和试图(Views)。模型:负责数据存取层,处理与数据相关的事物;模板:处理与表现相关的决定;视图:存取模型及调取恰当模板的相关逻辑。其简便、快捷的开发数据库驱动的网站,有许多强大的第三方库。以下过程和程序采用python3.7,Django3。


四、FBV视图

1.设置相应方式

1.1返回响应

通过return方式返回相应内容,响应类包括:
HttpResponse

HttpResponse有两个参数,第一个是网页内容,第二个是状态码。利用HttpResponse过程中当网页内容过大,就会增加视图的代码量,因此,Django封装了函数render、render_to_response和redirect。其中render语法如下:

render(request,template_name,context =None,content_type=None,status=
None,using= None)

其中request,template_name是必须参数,其余是可选参数:
Request:请求对象信息,包括用户信息,请求内容和请求方式
template_name:设置模板文件
context :对模板上下文赋值
content_type:响应内容的数据格式
status:状态码
using:设置模板引擎
例如context用法:

1.2设置重定向

状态码301和302是重定想,,前者是永久性跳转,后者是临时跳转,Django定义的redirect函数支持路由地址或路由命名的传入,最主要是通过permamemt参数真贱即可。3.
例子如下:
设置urls.py

设置views.py

1.3.异常相应

状态码404和500是异常响应,使用render函数作为相应过程,设置参数status的状态码即可。
设置Newneil的urls

Handler404 = ‘not_found’
Handler500 = ‘page_error’

设置views

def not_found(request,exception)
return render(request,404.html,status=404)
def page_error (request,exception)
return render(request,500.html,status=500)

分别建立404.html,500.html

1.4.文件下载

Django提供三种方式的下载功能;
HttpResponse:所有相应过程的核心类
StreamingHttpResponse是在HttpResponseBase基础上重新写的,适用于大规模数据响应和文件传输响应。
FileResponse,是在StreamingHttpResponse基础上写的,只适用与文件传输
例如:
设置urls

path('', views.goods,name='index.html'),
path('downlaod/file', views.download,name='download'),

设置views

from django.shortcuts import render
from django.http import HttpResponse,Http404
from django.http import StreamingHttpResponse,FileResponse
def goods(request):
	return  render(request,'index.html')
def download(request): 
 	file_path ='D:\cat.jpg'
 	try:
 	        f=open(file_path,'rb')
 		r=FileResponse(f,as_attachment=Ture,filename='cat.jpg')
		return r
	except Exception
		raise Http404('error')

2.HTTP请求对象

2.1获取请求对象

最基本的请求方式是GET和POST
GET:请求的参数是在路由地址后添加“?”,参数内容以key=value形式表示,涉及多个时,用&分隔开。
POST:传递方式一般以表单形式,常见使用HTML的form标签
Django在收到请求后,会创建一个WSGIRequest对象,作为视图函数的首个参数,其中:
path:获取当前路由地址
GET:获取请求参数
POST:获取请求参数

设置urls

path('',views.goods,name='goods')

设置views

def goods(request)
	if request.method == 'GET'
		print(request.is_ajax())
		print(request.GET.get('goods',''))
		return render(request,'index.html')
	elif request.method == 'POST'
		print(request.POST.get('goods',''))
 		return render(request,'index.html')
2.1文件上传

文件上出是指上传图片、音乐等,其上传原理是将文件以二进制的数据格式读取并写入。

设置urls

path('',views.upload,name='upload')

设置views

def upload(request):
if request.method == 'POST':
	myFile = request.FILES.get("myfile",None)
	if not myFile:
		return HttpResponse("no")
	f = open(os.path.join("D:\\upload",myFile.name),'wb+') 
	for i in myFile.chunks():
		f.write(i)
	f.close
else:
	return render(request,'upload.thml')

总结

任何行为都不要无目的的做出,也不要不根据完善的艺术原则做出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值