django05会话技术

一、HttpRequest对象

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

  • 属性

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

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

    # 参数获取
    name -request.POST.post('name')
    

二、HttpResponse对象

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

  • HttpResponse()

    response = HttpResponse('hello')
    response = HttpResponse('hello',status=200)
    
  • 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

# 注册
```
1、urls
url(r'^register/$',views.register,name=register)

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

```
register.html # 注册页面
{% csrf_token %} # 注册的东西

``` # 登录 ``` 1、urls url(r'^login/$',views.login,name=login) 2、views def login(request): if request.method=='POST':# 登录操作 uesrname = request.POST.get('username') password = request.POST.get('password') # 根据用户名和密码 去数据库中找 # 能找到,登录成功 # 找不到,登录失败 users = User.objects.filter(u_name=username,u_password=password) if user.exists(): # 存在 user = users.first() # 登录成功,直接重定向 首页 response = redirect('/meituan/') #设置cookie response.set_cookie('username',user.u_name) return HttpResponse('{}登录成功'.format(username)) else: # 不存在 return HttpResponse('登录失败') elif request.method == 'GET':# 获取登录页面 return render(request,'login.html') return ``` ``` login.html # 注册页面
{% csrf_token %} # 登录的东西

...
``` # 退出登录 ``` 1、url url(r'logout/$',views.logout,name='logout') 2、views def logout(request): # 删除cookie response = redirect('/meituan/') response.delete_cookie('username') return response ``` # 关于 ``` 1、url url(r'about/$',views.about,name='about') 2、views def about(request): # 获取cookie username = request.COOKIES.get('username') return render(request,'about.html',context={'username':username}) ```

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