前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >day68-Django进阶-ORM操作(聚合函数)+cookie+session

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

原创
作者头像
少年包青菜
修改2019-10-25 15:47:24
4170
修改2019-10-25 15:47:24
举报
文章被收录于专栏:Python 学习Python 学习

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

代码语言:javascript
复制
from django.db.models import Avg, Count, Sum, Max, Min  # 导入方法

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

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

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

4.F查询

代码语言:javascript
复制
from django.db.models import F, Q

5.Q查询之与或非

6.关于插入事务

7.cookie和session示例

代码语言:javascript
复制
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

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.配合聚合函数使用的.aggregate(),单独筛选某些字段
  • 2.配合聚合函数使用的.annotate(),先使用.values()分组
  • 3.根据别名基础上再筛选
  • 4.F查询
  • 5.Q查询之与或非
  • 6.关于插入事务
  • 7.cookie和session示例
    • 设置cookie
      • 获取cookie
        • 删除cookie
          • 设置session
            • 获取session
              • 删除session
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档