分页



分页是指在web页面有大量数据需要显示,为了阅读方便在每个



页页中只显示部分数据。



优点:



1.方便阅读



2.减少数据提取量,减轻服务器压力。




python Django高级操作-分页-定义CVS-发送邮件_python


Paginator对像


负责分页数据整体的管理


对象的构造方法



python Django高级操作-分页-定义CVS-发送邮件_后端_02


Paginator属性



python Django高级操作-分页-定义CVS-发送邮件_数据_03


Paginator方法



python Django高级操作-分页-定义CVS-发送邮件_后端_04


Paginator异常exception



python Django高级操作-分页-定义CVS-发送邮件_django_05


page对象 定义


创建具体某一页的数据的管理


创建对象



python Django高级操作-分页-定义CVS-发送邮件_django_06


Page对象方法



python Django高级操作-分页-定义CVS-发送邮件_python_07


def test_page(request):

    page_num = request.GET.get('page',1)
    all_data = ['a','b','c','d','e']
    #初始化paginator
    paginator = Paginator(all_data,2)
    #初始化  具体页码的page对象
    c_page = paginator.page(int(page_num))
    return render(request,'test_page.html',locals())



CSV文件定义


    逗号分隔值(Comma- Separated Values,CSV, 有时也称为字符分 隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储 表格数据(数字和文本) 说明:可被常见制表工具,如excel等直 接进行读取


python中生成CSV文件


import csv

with open('test_csv.csv','w',newline='') as csvfile:

    writer = csv.writer(csvfile)
    writer.writerow(['a','b','c'])
    writer.writerow(['d','e'])


csv文件下载



python Django高级操作-分页-定义CVS-发送邮件_django_08



内建用户系统


基本模型操作 - 创建用户


1、创建普通用户create_user



python Django高级操作-分页-定义CVS-发送邮件_数据_09


2、创建超级用户create_superuser



python Django高级操作-分页-定义CVS-发送邮件_django_10


1、基本模型操作 - 删除用户



python Django高级操作-分页-定义CVS-发送邮件_数据_11


2、基本模型操作 -校验密码



python Django高级操作-分页-定义CVS-发送邮件_Django发送邮件_12


3、基本模型操作 -修改密码



python Django高级操作-分页-定义CVS-发送邮件_后端_13


4、基本模型操作 -登陆状态



python Django高级操作-分页-定义CVS-发送邮件_数据_14


5、基本模型操作 -登陆状态校验



python Django高级操作-分页-定义CVS-发送邮件_Django发送邮件_15


6、基本模型操作 -登陆状态取消



python Django高级操作-分页-定义CVS-发送邮件_django_16


思考:


内建用户表字段不够用怎么办?比如添加手机号字段。


内建用户表 - 扩展字段


方案1:通过建立新表,跟内建做1对1


方案2:继承 内建的抽象user模型类


内建用户表 - 继承内建抽象类



python Django高级操作-分页-定义CVS-发送邮件_python_17



python Django高级操作-分页-定义CVS-发送邮件_Django发送邮件_18



python Django高级操作-分页-定义CVS-发送邮件_python_19



文件上传


定义: 用户可以通过浏览器将图片等文件传至网站


场景:


    用户上传头像


    上传流程性的文档【pdf,txt】


上传规范 - 前端【HTML】



python Django高级操作-分页-定义CVS-发送邮件_python_20


<form action="/test_upload" method="post" enctype="multipart/form-data">
        {% csrf_token %}
        <p>
            <input type="text" name="title">
        </p>
        <p>
            <input type="file" name="myfile">
        </p>
        <p>
            <input type="submit" value="上传">
        </p>
    </form>


上传规范 - 前端【Django】


视图函数中,用request.FILES取文件框的内容


file=request.FILES['XXX']



python Django高级操作-分页-定义CVS-发送邮件_后端_21


配置文件的访问路径和存储路径



python Django高级操作-分页-定义CVS-发送邮件_Django发送邮件_22


MEDIA_URL和MEDIA_ROOT需要手动绑定


步骤:主路由中 添加路由



python Django高级操作-分页-定义CVS-发送邮件_django_23


说明:等价于做了MEDIA_URL开头的路由,Django接到该特征请求后去MEDIA_ROOT路径查找资源


文件写入方案1:传统的open方式



python Django高级操作-分页-定义CVS-发送邮件_python_24


文件写入方案1:传统的ORM方式


字段: FileField(upload='子目录名')



python Django高级操作-分页-定义CVS-发送邮件_数据_25



Django发送邮件


业务场景


    业务告警、邮件验证、密码找回


邮件相关协议 - SMTP


  • SMTP的全称是"Simple Mail Transfer Protocol",即简单邮件传输协 议(25号 端口)。
  • 它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制 邮件的中转
  • 属于“推送”协议

邮件相关协议 - IMAP


  • IMAP全称是Internet Mail Access Protocol,即交互式邮件访问协 议,是一个应用层协议(端口是143)
  • 用来从本地邮件客户端(Outlook Express、Foxmail、 Mozilla  Thunderbird等)访问远程服务器上的邮件。
  • 属于“拉取”协议

邮件相关协议 - POP3


  • POP3是Post Office Protocol 3的简称,即邮局协议的第3个版本, 是TCP/IP协议族中的一员(默认端口是110) 。
  • 本协议主要用于支持使用客户端远程管理在服务器上的电子邮件
  • 属于“拉取”协议

IMAP   VS  POP3


两者均为“拉取”型协议,负责从邮件服务器中下载邮件


  • IMAP 具备摘要浏览功能,可预览部分摘要,再下载整个邮件
  • IMAP 为双向协议,客户端操作可反馈给服务器


  • POP3必须下载全部邮件,无摘要功能
  • POP3为单向协议,客户端操作无法同步服务器


python Django高级操作-分页-定义CVS-发送邮件_Django发送邮件_26


Django发邮件


主要为SMTP协议,负贡发邮件


原理:


  • 给Django授权一-个邮箱
  • Django用该邮箱给对应收件人发送邮件
  • django.core.mail封装了电子邮件的自动发送SMTP协议

Django配置


#邮件相关配置

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'

EMAIL_HOST = 'smtp.qq.com' # 腾讯QQ邮箱 SMTP 服务器地址

EMAIL_PORT = 25  # SMTP服务的端口号

EMAIL_HOST_USER = '输入QQ邮箱'  # 发送邮件的QQ邮箱

EMAIL_HOST_PASSWORD = '输入授权码'  # 在QQ邮箱->设置->帐户->“POP3/IMAP......服务” 里得到的在第三方登录QQ邮箱授权码


函数调用



python Django高级操作-分页-定义CVS-发送邮件_后端_27


测试案例:



python Django高级操作-分页-定义CVS-发送邮件_数据_28


等待几秒钟就可以收到测试邮件



python Django高级操作-分页-定义CVS-发送邮件_python_29


练习 - 邮件告警



python Django高级操作-分页-定义CVS-发送邮件_Django发送邮件_30


利用中间件实现


class ExceptionMW(MiddlewareMixin):

    def process_exception(self, request, exception):

        print(exception)
        print(traceback.format_exc())

        mail.send_mail(
            subject='mysite7报错啦~', message=traceback.format_exc(),
        from_email='输入QQ邮箱',recipient_list=settings.EX_EMAIL)
        return HttpResponse('---对不起 当前网页有点忙')


setting.py文件加上这条语句


EX_EMAIL = ['输入QQ邮箱']



python Django高级操作-分页-定义CVS-发送邮件_Django发送邮件_31