导入:from django.shortcuts import HttpResponse
用法:return HttpResponse('12300')
解释:表示返回数据,状态码200
导入:from django.http.response import JsonResponse
用法:return JsonResponse(data)
解释:表示返回Json数据
导入:from django.shortcuts import render
用法:
con = {'value': "这是jinja2"}
return render(request, 'testWeb/index.html', locals()) #locals()能包含多个字典
# 区别:模板里面调用value{{ con.value }}
或
con = {'value': "这是jinja2"}
return render(request, 'testWeb/index.html', context=con)
# 区别:模板里面调用value{{ value }}
原理:render调用HttpResponse
导入:from django.shortcuts import redirect
状态码:301表示永久重定向首页地址(搜索引擎在抓取新内容的同时也将旧的网址替换成重定向之后的网址),302表示临时重定向首页地址(搜索引擎保留旧网址不替换成重定向之后的网址)
用法:
return redirect("https://www.gaoh222.cn", permanent=True) # permanent=True表示301;permanent=Flase表示302return redirect("in:go", permanent=False) # in:go 名字跳转原理:redirect调用HttpResponsePermanentRedirect或者HttpResponseRedirect
解释:django提供httpResponseNotFound(‘404’),HttpResponseServerError(‘500’),但常用render(requeset,'404.html',status=404)
状态码:404表示网页不存在,403表示没有访问权限,405表示不允许使用该请求方式,500表示服务器内部错误
用法:
urls.py
解释:发生该错误就会按照状态码根据下面的内容寻找视图
handler404='index.views.page404' # 404错误时
handler500='index.views.page500' # 500错误时
views.py
# exception 必需有
def page404(request, exception):
render(request,'404.html',status=404)
导入:from django.http import FileResponse
用法:
# 注意路径以manage.py为基准
def download(request):
try:
file = open('testWeb/download/1.png','rb') # 注意路径以manage.py为基准
data = FileResponse(file, as_attachment=True, filename='1.png')
return data
except:
return HttpResponse("fail")
注意:multipart/form-data必须有不然request.FILES获取不到信息
用法:
views.py
for chunk in file.chunks():
f.write(chunk)
def go(request):
con = {'value': "这是jinja2"}
allowType=['image/jpeg','image/png']
if request.method == "POST":
file = request.FILES['myfile']
if file:
if file.size/1024/1024>2:
return HttpResponse('to big')
elif file.content_type not in allowType:
return HttpResponse('angry')
else:
f = open(os.path.join('testWeb/static', file.name), 'wb+') # os.path.join 连接两个以上的名字,适合动态
for chunk in file.chunks():
f.write(chunk)
f.close()
return HttpResponse('ok')
else:
return render(request, 'testWeb/index.html', context=con)
index.html
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
head>
<body>
<form enctype="multipart/form-data" action="" method="post">
<input type="hidden" value="{{ csrf_token }}">
<input type="file" name="myfile"><br>
<input type="submit" value="上传">
form>
body>
html>
解释:request.COOKIES['名字']
参数:
def cookie(request):
k = HttpResponse('0')
k.set_cookie('name', 'jack',max_age=60*60*24*30)
return k
解密:request.get_signed_cookie('namess', salt='yueyue')
原理:对key值进行加密然后调用set_cookie,加密方式
参数:
def cookie(request):
print(request.COOKIES)
print(request.get_signed_cookie('namess', salt='yueyue'))
k = HttpResponse('0')
k.set_signed_cookie('namess', 'data569', salt='yueyue', max_age=50000)
return k