day68-Django进阶-ORM操作(聚合函数)+cookie+session

1.配合聚合函数使用的.aggregate(),单独筛选某些字段

from django.db.models import Avg, Count, Sum, Max, Min  # 导入方法

2.配合聚合函数使用的.annotate(),先使用.values()分组

3.根据别名基础上再筛选

还有部分书籍没有分配作者的,别记错了

4.F查询

from django.db.models import F, Q

5.Q查询之与或非

6.关于插入事务

7.cookie和session示例

from django.shortcuts import render, redirect


# Create your views here.

# 设置cookie判断装饰器,用于对login之后的路径的校验
def login_required(func):
    def inner(request, *args, **kwargs):  # 给装饰器传递参数
        """
        ############################################################
        """
        # if:如果cookie认证不过的话
        # if request.COOKIES.get('is_login') != '1':  # 在访问某个路径之前,先从cookie中判断是否 is_login = 1
        if request.session.get('is_login') != '1':
            """
            ############################################################
            """

            next_url = request.path_info  # 如果不是1(在没有cookie的状态下访问),则获取用户输入的路径,并保存
            print(next_url)
            return redirect('/login/?next={}'.format(next_url))  # 不过则进入login页面,将拼接的url放在浏览器地址栏

        ret = func(request, *args, **kwargs)  # 执行对应函数
        return ret

    return inner


# 登录函数
def login(request):
    if request.method == 'POST':
        username = request.POST.get('username')  # 获取用户名
        password = request.POST.get('pwd')  # 获取密码
        if username == 'leon' and password == '123':  # 校验用户名&密码
            next_url = request.GET.get('next')  # 获取拼接的next路径
            if next_url:  # 如果存在,即代表用户之前已经访问对应url
                aim_url = redirect(next_url)  # 之后直接访问之前想访问的路径
            else:
                aim_url = redirect('/index/')
            """
            ############################################################
            """

            # aim_url.set_cookie('is_login',  # is_login 状态设置为 1
            #                    '1',
            #                    max_age=60
            #                    )  # 设置cookie,cookie的有效时间是60秒

            request.session['is_login'] = '1'  # session 版本的认证
            request.session.set_expiry(0)  # 浏览器一旦关闭,session就会失效
            """
            ############################################################
            """

            return aim_url  # 设置完cookie就返回这个网页
    return render(request, 'login.html')


# 登录返回index
@login_required  # cookie判断
def index(request):
    # 执行完 cookie认证之后...

    return render(request, 'index.html')


# 注销
def logout(request):

    ##############################################################
    
    aim_url = redirect('/login/')  # 退出则返回到 login 页面
    # aim_url.delete_cookie('is_login')  # 退出顺手就把 cookie 给删除了
    request.session.flush()  # 注销的时候,清空 session
    
    ##############################################################
    
    return aim_url

设置cookie

获取cookie

删除cookie

设置session

获取session

删除session

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大数据文摘

姜还是老的辣!MIT调研了270万家初创公司,发现最赚钱的创始人平均45岁

硅谷是一个创造年轻企业家神话的地方,前有Zackburg,后有Evan Spiegel都是少年得志。年轻多金的科技公司创始人一时成为了性感标签。然而研究表明,成...

12820
来自专栏大数据进阶

【译】Envoy threading model

原文链接:https://blog.envoyproxy.io/envoy-threading-model-a8d44b922310

10550
来自专栏大数据文摘

机器推理系列文章概览:七大NLP任务最新方法与进展

从规则方法、统计方法到目前的深度学习方法,自然语言处理(NLP)研究一直处于不断发展和进化的状态之中,并在过去五年取得了令人瞩目的成果。对于一个拥有充分标注语料...

9520
来自专栏IT大咖说

7 大最致命的云安全盲点

当下在提供 IT 服务的方面,云计算正从一个可选项进化为事实上的标准选项。根据“ 2019 年公共云趋势”,从这份企业战略集团(ESG)的报告来看,IaaS 环...

7620
来自专栏电脑网络小帮手

常说的32位和64位有什么区别?

https://baike.baidu.com/item/%E4%BD%8D%E3%80%81%E5%AD%97%E8%8A%82%E3%80%81%E5%AD...

1.6K10
来自专栏大数据进阶

python-protobuf2uml

首先这篇文章是参考的https://github.com/vak/protobuf2uml

8040
来自专栏机器之心

7 Papers | AI写论文更近一步?联邦学习怎样与通信领域结合

论文 1:Best Practices for Scientific Research on Neural Architecture Search

13010
来自专栏深度学习自然语言处理

求问meta-learning和few-shot learning的关系是什么?

我们倾向于把few-shot learning理解成这样一个问题--如何训练一个模型使其基于少量的训练样本能在目标任务中获得好的性能。

21020
来自专栏Datawhale专栏

竞赛专题(四)特征工程-竞赛中的必杀技

为了帮助更多竞赛选手入门进阶比赛,通过数据竞赛提升理论实践能力和团队协作能力。DataFountain 和 Datawhale 联合邀请了数据挖掘,CV,NLP...

18330
来自专栏IT大咖说

不要小看小小的 emoji 表情

https://github.com/crossoverJie/cim/issues/12

13430

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励