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系列之HashMap原理

    目录 类图 源码解读 总结 类图 在正式分析HashMap实现原理之前,先来看看其类图. 源码解读 下面集合HashMap的put(K key, V value)方法探究其实现原理. // 在Hash ...

  2. C++常见问题解答博客合集

    1 关于宏 https://blog.csdn.net/hanchaoman/article/details/8809951

  3. 多项式求导系列——OO Unit1分析和总结

    一.摘要 本文是BUAA OO课程Unit1在课程讲授.三次作业完成.自测和互测时发现的问题,以及倾听别人的思路分享所引起个人的一些思考的总结性博客.本文第二部分介绍三次作业的设计思路,主要以类图的形 ...

  4. 开放源代码的设计层面框架Spring——day01

    spring第一天     一.Spring概述         1.1spring概述             1.1.1spring介绍                 Spring是分层的Jav ...

  5. Python——正则表达式初步应用(一)

    1.先附上转载(www.cnblogs.com/huxi)的一张图,有重要的参考价值,其含义大家请通过阅读来理解. 2.附上初步学习Python时编写的一个爬糗事百科段子的代码. # -*- codi ...

  6. XSS绕过<>进行测试

    大家都知道,普遍的防御XSS攻击的方法是在后台对以下字符进行转义:<.>.’.”,但是经过本人的研究发现,在一些特殊场景下,即使对以上字符进行了转义,还是可以执行XSS攻击的. 首先看一个 ...

  7. iview-admin安装

    桌面创建project文件夹. 文件夹内右键选择gitbash here,输入git init.文件夹内会生成.git文件夹. 再输入git config --global user.name &qu ...

  8. Java中快捷键

    Fond表示字体 size表示字号 IDEA的基本配置 IDEA中常用的快捷键 Intellij IDEA基本快捷键 Ctrl+G 跳转到指定行 Ctrl+F4 关闭当前编辑页面 Ctrl+F 搜索 ...

  9. HDU-6397(2018 Multi-University Training Contest 8) Character Encoding(生成函数+组合数学)

    题意 从$0$到$n-1$的数字里可重复的取至多$m$个数的和等于$k$的方案数. 思路 显然的生成函数的思路为构造 $(1+x+x^{2}+...+x^{n-1})^{m}$ 那么$x^{k}$的系 ...

  10. webpack之proxyTable设置跨域

        可以看看这个视频中的介绍 :https://ke.qq.com/course/350693?tuin=f158ed6