06-会话技术

一、HttpRequest 对象

  • 概述
    服务器接收到客户端请求后,系统自动创建的对象(视图函数第一个参数)。

  • 属性

    path 请求路径
    method 请求方法
    GET get请求参数
    POST post请求参数
    FILES 上传文件
    COOKIES cookie对象【会话技术】
    SESSION session对象 【会话技术】
    
    
  • GET请求

    # 参数获取
    name = request.GET.get('name')
    
    
  • POST请求

    # 参数获取
    name = request.POST.get('name')
    

二、HttpResponse对象

  • 概述
    用于返回数据给客户端的。

  • HttpResponse()

    
    response = HttpResponse(’hello')
    
  • render()

    
    response = render(request,'index.html')
    response = render(request, 'index,html', status = 301)
    
  • redirect()

    
    response = redirect('/meituan/')
    
  • JsonResponse()
    
    stu = {'name': 'zhangsan', 'age':20}
    response = JsonResponse(stu)
    

三、会话技术

  • 概述

    
    HTTP 无状态 【请求一次,返回对应的响应,称为一次会话】
    
    会话技术:实现状态保持
    
    为什么要使用会话保持?
        在一定的时间段或操作中,跟踪请求者状态!【服务器就知道你谁】
    

    类比:github HTTP,每次操作都需要输入用户名和密码【服务器才知道你是谁】

  • 会话技术
    
    cookie: 客户端会话技术
    session: 服务器会话技术(要依托cookie)
    token: 手动session
    

四、会话技术cookie

    ```
# 注册:
def register(request):
    if request.method == 'POST': # 注册操作
        # 获取客户端的数据
        username = request.POST.get('username')
        password = request.POST.get('password')
        tel = request.POST.get('tel')
        
        # 保存到数据库
        user = User()
        user.u_name = username
        user.u_password = password
        user.u_tel = tel
        user.save()
        
        
        # 注册成功,直接重定向
        response = redirect('/meituan/')
        #设置cookie
        response.set_cookie('username',user.u_name)
        
        return response
        # return HttpResponse('{}注册成功'.format(username))
        
    elif request.method == 'GET' : # 获取注册页面
        return render(request, 'register.html')  # 进入注册页面

        
# 登录:
    def login(request):
        if request.method == 'POST': # 登录操作
            username = request.POST.get('username')
            password = request.POST.get('password')
            
            # 根据用户名和密码,去数据库中找
            # 能找到,登录成功
            # 找不到,登录失败
            users = User.objects.filter(u_name = username, u_password = password)
            if users.exists(): # 用户存在
                user = users.fist()
                # 登录成功,直接重定向(到首页)
                response = redirect('/meituan/')
                return response
                
                # return HttpResponse('{}登录成功'.format(user.u_name))
            else:  # 用户不存在
                return HttpResponse('用户名或密码错误!')
            
            
        elif request.method == 'GET': # 获取登录页面
            pass
        return None


# 退出登录:
    def logout(request):
    
        # 删除cookie
        response = redirect('/meituan/')
        response.delete_cookie('username')
        return response
    
    
    
# 关于我们:
    def about(request):
        # 获取cookie
        username = request.COOKIES.get('username')
        
        return render(request, 'about.html', context={'username':username))

# 首页
def index(request):
    # 获取用户名
    username = request.COOKIES.get('username')
    
    return render(request, 'meituan.html', context:{'username':username}

```

你可能感兴趣的:(06-会话技术)