1. 发送邮件

# settings.py设置
# 邮箱设置
EMAIL_USE_SSL = True
# 邮件服务器
EMAIL_HOST = 'smtp.qq.com'
# 邮件服务端口
EMAIL_PORT = 465
# 发送邮件账号
EMAIL_HOST_USER = "1223936862@qq.com"
# SMTP服务密码
EMAIL_HOST_PASSWORD = "oxwxxxxxgbrvjejc"
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
# views.py代码
from django.conf import settings
from django.core.mail import send_mail,send_mass_mail,EmailMultiAlternatives
def email_views(request):# 获取 settings.py 的配置信息
from_email = settings.DEFAULT_FROM_EMAIL # # send_mail每次发邮件都会建立一个新的连接,如果发送多封邮件,就需要建立多个连接
# send_mail("汪小鹏","来自Django的Email",from_email,['13387234406@qq.com']) # # send_mass_mail发送多封邮件
# message1 = ("汪小鹏","来自Django的Email",from_email,['13387234406@qq.com'])
# message2 = ("汪小鹏","来自Django的Email",from_email,['wangxp1994@outlook.com'])
# send_mass_mail((message1,message2),fail_silently=False) # EmailMultiAlternatives发送邮件
content = '<p>这是一封<strong>重要的</strong>邮件</p>'
msg = EmailMultiAlternatives('汪小鹏',content,from_email,['13387234406@qq.com'])
# 将正文设置成HTML格式
msg.content_subtype = "html"
# 对正文内容进行补充和添加
msg.attach_alternative('<strong>邮件来自Django</strong>','text/html')
# 添加附件
msg.attach_file('test.txt')
msg.send() return HttpResponse("发送成功")

2. 分页功能

# urls.py
...
path('page/<page>',product_views),
...
# views.py
from django.core.paginator import Paginator,EmptyPage,PageNotAnInteger
def product_views(request,page):
# 获取数据表全部数据
Product_list = Product.objects.all()
# 设置每一页数据量为3
paginator = Paginator(Product_list, 3) try:
# 获取某一页的数据对象
pageInfo = paginator.page(page)
except PageNotAnInteger:
# 如果page的数据类型不是整型,就返回第一页
pageInfo = paginator.page(1)
except EmptyPage:
# 若用户访问的页数大于实际页数,则返回最后一页
pageInfo = paginator.page(paginator.num_pages) print("="*20) # 输出分页的全部数据
print(paginator.object_list)
# 获取当前被分页的数据总量
print(paginator.count)
# 获取分页的总页数
print(paginator.num_pages)
# 将页数转换成range循环对象
print(paginator.page_range)
# 判断当前页是否存在上一页
print("上一页",pageInfo.has_previous())
# 如果当前页数存在上一页,输出上一页页数,否则抛出Empty异常
print("上一页码",pageInfo.previous_page_number())
# 判断当前页是否存在上一页
print("下一页",pageInfo.has_next())
# 如果当前页数存在下一页,输出下一页页数,否则抛出Empty异常
print("下一页码",pageInfo.next_page_number())
# 输出当前页的数据信息
print("当前页",pageInfo.object_list)
# 输出当前页的第一条数据在整个数据表的位置,从1开始计算
print(pageInfo.start_index())
# 输出当前页的最后一条数据在整个数据表的位置,从1开始计算
print(pageInfo.end_index())
return render(request,"page.html",locals())

<玩转Django2.0>读书笔记:邮件和分页的更多相关文章

  1. <玩转Django2.0>读书笔记:表单

    1. 表单字段 参考: 官方文档 Django表单字段汇总 2. 表单代码示例(forms.Form) # form.py代码 # 获取数据库数据 choices_list = [(i+1,v['ty ...

  2. <玩转Django2.0>读书笔记:模板和模型

    1. 模板内置标签 Django常用内置标签 标签 描述 {% for %} 遍历输出变量的内容 {% if %} 对变量进行条件判断 {% csrf_token %} 生成csrf_token标签, ...

  3. <玩转Django2.0>读书笔记:URL规则和视图

    1. 带变量的URL #urls.py from django.urls import path from .view import * urlpatterns = [ path('',index_v ...

  4. 《玩转Django2.0》读书笔记-探究视图

    <玩转Django2.0>读书笔记-探究视图 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 视图(View)是Django的MTV架构模式的V部分,主要负责处理用户请求 ...

  5. 《玩转Django2.0》读书笔记-编写URL规则

    <玩转Django2.0>读书笔记-编写URL规则 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. URL(Uniform Resource Locator,统一资源定位 ...

  6. 《玩转Django2.0》读书笔记-Django配置信息

    <玩转Django2.0>读书笔记-Django配置信息 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 项目配置是根据实际开发需求从而对整个Web框架编写相应配置信息. ...

  7. 《玩转Django2.0》读书笔记-Django建站基础

    <玩转Django2.0>读书笔记-Django建站基础 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.网站的定义及组成 网站(Website)是指在因特网上根据一 ...

  8. 玩转 Django2.0 笔记1

    模板静态  路由 urls.py urlpatterns = [ path("<year>/<int:month>/<slug:day>",my ...

  9. vue2.0读书笔记2-进阶

    一.深入响应式原理 二.过渡效果 三.过渡状态 四.Render函数 五.自定义指令 六.混合 七.插件 八.单文件组件 九.生产环境 十.路由 vue-router: http://router.v ...

随机推荐

  1. 深入理解Java的三种工厂模式

    一.简单工厂模式 简单工厂的定义:提供一个创建对象实例的功能,而无须关心其具体实现.被创建实例的类型可以是接口.抽象类,也可以是具体的类 实现汽车接口 public interface Car { S ...

  2. JN_0008:win下通过cmd进入指定目录

    1,WIN+R,调出运行命令窗口,并输入CMD,回车确认运行 2,先进入盘符,如:    d: 3,再进入盘符下的指定目录,如:    cd test 4,一次性进入指定目录(要用到  /d 命令): ...

  3. 试用VS2019正式版

    1.下载地址https://visualstudio.microsoft.com/zh-hans/downloads/2.安装,安装过程比较简单,直接下一步,下一步即可,现在的网速一般下载+安装要2个 ...

  4. JS数组(JSON)整合篇-方法整理

    遍历:arr_Param.forEach(function (item, i) {}); 反序排序:arr_Param.reverse(); 合并数组:arr_Param.push.apply(arr ...

  5. Django commands自定制

    什么是Django Commands Django 对于命令的添加有一套规范,你可以为每个app 指定命令.通俗一点讲,比如在使用manage.py文件执行命令的时候,可以自定制自己的命令,来实现命令 ...

  6. 【译】索引进阶(十三):SQL SERVER中的索引碎片【下篇】

    原文链接:传送门. 通用碎片模式 如果一个表具有多个索引,那么这些索引便具有多个索引键,因而也具有不同的顺序.通常情况下,这些索引中的一两个展示了之前描述过的升序插入模式,而其他的通常展示了随机插入模 ...

  7. python时间模块小结

    1.datetime 模块 为日期和时间处理同时提供了简单和复杂的方法.支持日期和时间算法的同时,实现的重点放在更有效的处理和格式化输出.该模块还支持时区处理: 简单例子: from datetime ...

  8. Centos系统FastDFS搭建与排错

    FastDFS中Tracker server主要是负载均衡和调度,Storage server主要是文件存储. 1.1 系统环境 [root@ centos fastdfs]# cat /etc/re ...

  9. nginx+uwsgi+django开发环境搭建

    Nginx+uWSGI+Djangoi开发环境搭建 Django简介,环境搭建 uWSGI简介,安装与配置 Nginx安装与配置 Nginx+uWSGI+Django原理解析 1.django简介,环 ...

  10. 如何用java实现一个p2p种子搜索(1)-概念

    前言 说句大实话,网上介绍怎么用java实现p2p种子的搜索这种资料不是特别多,大部分都是python的,用python的话就会简单很多,它里面有很多简单方便的包,libtorrent等等,当然你用这 ...