2021-05-20

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']})
        


###### 任务完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值