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 # 注册页面
<form action="{% 'meituan:register %}" method=“post”>
    {% csrf_token %}
    # 注册的东西
    <p>
        <input type='text' name='user' placeholder='用户名'>
    </p>
</form>
```


# 登录
```
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 # 注册页面
<form action="{% 'meituan:login %}" method=“post”>
    {% csrf_token %}
    # 登录的东西
    <p>
        <input type='text' name='user' placeholder='用户名'>
    </p>
    ...
</form>
```


# 退出登录
```
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})

```
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • 目录Cookie机制什么是CookieCookie的不可跨域名性Unicode编码:保存中文BASE64编码:保存...
    Tomatoro阅读 16,909评论 7 186
  • 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Se...
    chinariver阅读 5,593评论 1 49
  • 模块间联系越多,其耦合性越强,同时表明其独立性越差( 降低耦合性,可以提高其独立性)。软件设计中通常用耦合度和内聚...
    riverstation阅读 2,059评论 0 8
  • Web框架之Django: (1)简介: Django是一个由Python写成开源的重量级Web应用框架,采用MT...
    老肖阅读 3,045评论 0 18
  • 日子一天天的过,时间一分一秒毫不留情的离我而去。有些时候我会忽而觉得如沐春风似得,幸福的如同吃了蜜。 ...
    曹帽子阅读 460评论 0 1