Django高级开发

本文详细介绍了Django的高级开发技巧,包括自定义过滤器实现手机号隐藏,自定义实体类管理器以扩展ORM功能,中间件的使用以全局影响请求和响应,以及缓存技术的配置与应用,以提升网站性能。
摘要由CSDN通过智能技术生成

Django高级开发

一、自定义过滤器

针对个人中心页面,展示用户的手机号中间部分隐藏,可以有两种思路

1、视图中修改,在视图中将用户手机号中的部分内容修改为 *

2、视图返回原有的数据,使用自定义过滤器的方法,将手机号中的部分内容隐藏

  • 自定义过滤器定义

    1、在App中新建一个包 templatetags,名字固定

    2、在包中新建一个py文件,名字任意,例如:mytag.py

    3、创建过滤器,写函数代码(一个参数或者两个参数),并注册

    from django.template import Library
    
    register = Library()
    
    
    @register.filter
    def filter_phone(phone):
        return phone[:3] + "*" * 4 + phone[8:]
    
    
    if __name__ == '__main__':
        print(filter_phone("1223345464"))
        
    # 注册过滤器
    "buyer.templatetags"
    
    
  • 自定义过滤器使用

    1、在模板中加载过滤器

    在个人中心页面中的首行加载过滤器

    {% load mytag %}

    2、使用过滤器

    在个人中心页面中使用自定义过滤器

    联系方式: { { user.phone | filter_phone }}

二、自定义实体类管理器manager

​ 通常我们通过模型的objects方法调用查询的方法,实质上,objects是Django模型动态生成的一 个 查询类,这个查询类继承了models.Manager

  • 自定义objects

    from django.db.models import Manager

  • 定义类

    from django.db.models import Manager
    
    
    class SellerManager(Manager):
        
        def getname(self, id):
            return Seller.objects.get(pk=id).name
    
  • 将定义的类复制到objects

    objects =SellerManager()
    

    1个实体类只有能有1个名字是objects的管理器,如果定义其他管理器了,objects就没有

​ 通常在工作当中,自定义ORM查询的可能性不大,由于MySQL的灵活性和复杂性,导致大部分项 目愿意使用原生的SQL查询。但是对数据进行增删改都可以自定义ORM

三、中间件
  • 中间件介绍

    中间件是处理Django请求和响应的框架级别的钩子,它是一个轻量、低级别的插件系统,用于全局范围内改变Django的输入和输出,每一个中间件都有固定的功能,使用需要很谨慎。中间件尽可能的解决了项目代码冗余和代码一致性问题

    django中间件是django提供给用户可以影响全局请求和响应的接口

​ process_request 请求开始,视图之前

​ process_views 请求开始,视图之中

​ process_exception 错误

​ process_template_response 视图结束,模板开始渲染

​ process_response 响应结束

​ 中间件执行的顺序和平常代码执行的顺序有差距,开发者通过类来定义中间件,中间件类当中可以包含上述的5个方法

在这里插入图片描述

  • 中间件使用

1、创建文件

在项目的主目录下编写middleware文件,用来编写中间件

2、中间件的方法

"""中间件"""
from django.utils.deprecation import MiddlewareMixin
from django.http import HttpResponse


class MyMiddleware(MiddlewareMixin)
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值