2021.5.20
今日目标:
1.请求与相应对象
2.文件上传1
3.文件上传2_图片获取
4.文件下载
5.重定向_错误订制页面
6.cookie语法
7.三天免登录
8.session语法
9.session应用
now:7:56
1、8:00--8:33 请求与响应
2、8:35--9:07 文件上传1
3、9:20--11:00 文件上传2_图片获取
问题:media上传图片失败
解决:
from django.views.static import serve
from t_2 import settings
from t_2.settings import DEBUG
if DEBUG:
urlpatterns.append(re_path(r'media/(?P<path>.*)$',serve,{'document_root':settings.MEDIA_ROOT}))
4、13:09--13.37 文件下载
def download_view(request):
# 获取请求参数(图片存储位置)
photo = request.GET.get('photo', '')
# 获取文件名
filename = photo[photo.rindex('/')+1:]
photo = photo.replace('/','\\')
# 开启一个流
import os
path = os.path.join(os.getcwd(),'media',photo)
print(path)
with open(path, 'rb') as fr:
response = HttpResponse(fr.read())
response['Content-Type']='image/png'
response['Content-Disposition']='attachment;filename='+filename
return response
5、13.50--14:18 重定向
def index_view(request):
# return HttpResponseRedirect('/stu/showall/') (302)
# return redirect('/stu/showall/', permanent=True) (301)
response = HttpResponse()
response.status_code = 302
response.setdefault('Location', '/stu/showall')
return response
def showall_view(request):
return HttpResponse('hello')
6.、14:20--15:39 cookie语法
def setcookie(request):
if request.COOKIES.has_key('uname'):
response.set_cookie('uname', 'laoli', expires=datetime.datetime.today() + datetime.timedelta(days=2),path='/stu/hello')
else:
return HttpResponse('当前Cookie信息不存在!')
import datetime
# 创建相应对象
response = HttpResponse()
# 将数据存在cookie中
# 默认有效时间 保存在浏览器缓存中,关闭浏览器数据丢失
# response.set_cookie('uname','laoli', max_age=60*60*24)
response.set_cookie('uname','laoli', expires=datetime.datetime.today()+datetime.timedelta(days=2),path='/stu/hello')
response.delete_cookie('uname', path='/stu/hello')
return response
def getcookie(request):
str = request.COOKIES.get('uname')
return HttpResponse(str)
7、17:27--18:00 三天免登录
def login_view(request):
if request.method=='GET':
# 判断客户端是否存在login对应的cookie信息
response = HttpResponse()
cookie = request.COOKIES
if 'login' in cookie:
login = request.COOKIES.get('login', '').split(',')
uname = login[0]
pwd = login[1]
return render(request, 'login.html', {'uname':uname, 'pwd':pwd})
return render(request, 'login.html')
else:
uname = request.POST.get('uname', '')
pwd = request.POST.get('pwd', '')
if uname=='zhangsan' and pwd=='123':
response = HttpResponse('登录成功!')
response.set_cookie('login','pwd', path='/student/login/', max_age=24*60*60*3)
return response
return HttpResponse('登录失败!')
8、21:00--22:05 Session语法
def setsession(request):
# 在session中存放数据
request.session['uname'] = 'zhangsan'
# 设置有效时间
request.session.set_expiry(3 * 24 * 60 * 60)
# 删除session对象中的数据
# del request.session['uname']
# request.session.clear()
# 删除session对象和数据库中的数据
request.session.flush()
return HttpResponse('设置成功!')
def getsession(request):
# 从session对象中取值
uname = request.session['uname']
return HttpResponse(uname)
9、22:08--23:05 session应用
def setsession(request):
# 在session中存放数据
request.session['uname'] = 'zhangsan'
# 设置有效时间
request.session.set_expiry(3 * 24 * 60 * 60)
# 删除session对象中的数据
# del request.session['uname']
# request.session.clear()
# 删除session对象和数据库中的数据
request.session.flush()
return HttpResponse('设置成功!')
def getsession(request):
# 从session对象中取值
uname = request.session['uname']
return HttpResponse(uname)
class User(object):
def __init__(self, uname, pwd):
self.uname = uname
self.pwd = pwd
import json
class MyEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, bytes):
return str(obj, encoding='utf-8')
return json.JSONEncoder.default(self, obj)
def login_view(request):
if request.method=='GET':
return render(request, 'login.html')
else:
uname = request.POST.get('uname', '')
pwd = request.POST.get('pwd', '')
if uname=='zhangsan' and pwd=='123':
user = User(uname, pwd)
request.session['login'] = json.dumps({'uname':user.uname,'pwd':user.pwd})
return HttpResponseRedirect('/student/usercenter/')
return HttpResponseRedirect('/student/login/')
def usercenter(request):
# 获取session数据
user = request.session['login']
uuser = json.loads(user)
return render(request, 'center.html', {'uname':uuser['uname']})