# 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')
总结
任何行为都不要无目的的做出,也不要不根据完善的艺术原则做出。