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. maven配置阿里镜像仓库

    打开maven的配置文件(windows机器一般在maven安装目录的conf/settings.xml),在<mirrors></mirrors>标签中添加mirror子节点 ...

  2. MySQL 死锁场景

    SESSION 1 SESSION 2 SESSION 3 START TRANSACTION START TRANSACTION START TRANSACTION INSERT       INS ...

  3. linux 每个小时释放一次cache

    echo 3 > /proc/sys/vm/drop_caches;

  4. Collections -- OrderedDict类

    普通dict(字典)在插入的时候并不记住元素的顺序,迭代器会根据散列表(哈希表)中存储的顺序来生成的.而OrderedDict则会记录元素的顺序,并且在迭代器输出时,会按现在记录的顺序进行遍历. 例: ...

  5. Intelij idea 版本控制工具窗口

    1. 在菜单栏vcs中启用版本控制 2. 然后调出工具窗口,view-tools window-version control

  6. JDBC——连接数据库

    JDBC的基本介绍 1.概述:jdbc是使用Java访问各种数据库的一种技术 (1)jdbc工作原理 2.jdbc核心Java类(API) (1)DriverManager类 作用:管理各种数据库的驱 ...

  7. vue路由--网站导航功能

    1.首先需要按照Vue router支持 npm install vue-router然后需要在项目中引入: import Vue from 'vue' import VueRouter from ' ...

  8. 关于lamp环境搭建过程的教程

    一.搭建lamp 的网址 https://lamp.sh/install.html 二.对于linux下上传图片或音频失败原因? 1.必须将文件夹的权限设置为apache 命令为:chown -R a ...

  9. 记事本:一些js案例以及DOM和BOM

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. SpringSecurity的配置分析

    在分析SpringSecurity前,基于多年前使用SpringSecurity和近年来使用Shiro的经验, SpringSecurity这些年在发展和SpringBoot整合之后,也逃不出以下的一 ...