邮件的发送及配置

# 配置邮件

EMAIL_USE_SSL = True

EMAIL_HOST = 'smtp.qq.com'  # 如果是 163 改成 smtp.163.com

EMAIL_PORT = 465

EMAIL_HOST_USER = "xxx@qq.com"  # 帐号

EMAIL_HOST_PASSWORD = "xxx"  # 授权码(****)

DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
import hashlib
import uuid def get_unique_str():
# 拿到uuid4的字符串
uuid_str = str(uuid.uuid4()).encode("utf-8")
# 使用md5摘要
md5 = hashlib.md5()
md5.update(uuid_str)
# 返回十六进制的字符
return md5.hexdigest() def send_verify_mail(req):
title = "来自xx的问候"
msg = ""
from_email = settings.DEFAULT_FROM_EMAIL
recieve = [
"xx@xxx.com"
]
code = get_unique_str()
# 拼接URL
url = "http://" + req.get_host() + "/myapp/verify/"+ code
print(url)
# 渲染HTML页面
template = get_template("verify.html")
html = template.render({"url": url})
# print(html)
# 发送邮件
send_mail(title, msg, from_email, recieve, html_message=html) # 将发送的结果保存到缓存
user_id = 1 #此处应该是真实的用户id
mycache.set(code, user_id, 60 * 60)
return HttpResponse("ok") def verify(req, code):
# 获取网址后边的路径 字符串 # 去缓存尝试拿数据
val = mycache.get(code)
# 如果能拿到 我们就修改is_active字段
if val:
MyUser.objects.filter(pk=int(val)).update(is_active=True)
mycache.delete(code)
return HttpResponse("验证成功")
# 如果没拿到 就告诉他链接无效
else:
return HttpResponse("链接无效")
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
欢迎注册
<br>
<a href="{{ url }}">{{ url }}</a>
</body>
</html>

前端部分代码

日志的配置及输出

ADMINS = (
('xxx', 'xxx@xxx.com'),
('xx', 'xxx@qq.com')
)
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
SERVER_EMAIL = EMAIL_HOST_USER #邮箱账号
LOGGING = {
'version': 1,
'disable_existing_loggers': True,
'formatters': {
# 格式
'standard': {
'format': '%(asctime)s [%(threadName)s:%(thread)d] [%(name)s:%(lineno)d] [%(module)s:%(funcName)s] [%(levelname)s]- %(message)s'
},
'easy': {
'format': '%(asctime)s|%(lineno)d|%(message)s'
}
},
'filters': {
# 过滤条件
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse',
},
'require_debug_true': {
'()': 'django.utils.log.RequireDebugTrue'
}
},
'handlers': {
'null': {
'level': 'DEBUG',
'class': 'logging.NullHandler',
},
'mail_admins': {
'level': 'ERROR',
'class': 'django.utils.log.AdminEmailHandler',
'filters': ['require_debug_false'],
},
'debug': {
'level': 'DEBUG',
'class': 'logging.handlers.RotatingFileHandler',
'filename': os.path.join(BASE_DIR, "log", 'debug.log'), # 文件路径
'maxBytes': 1024 * 1024 * 5, #5M的日志
'backupCount': 15, #允许有多少个日志文件
'formatter': 'easy',
},
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'standard',
},
},
'loggers': { 'django': {
'handlers': ['debug'],
'level': 'DEBUG',
'propagate': False
},
'django.request': { #系统自动调用
'handlers': ['debug', 'mail_admins'],
'level': 'ERROR',
'propagate': True, # 是否继承父类的log信息
},
# 对于不在 ALLOWED_HOSTS 中的请求不发送报错邮件
'django.security.DisallowedHost': {
'handlers': ['null'],
'propagate': False,
},
}
}

使用:

from django.http import HttpResponse
import logging
log = logging.getLogger('django') def test(req):
log.info("我是info")
1/0
return HttpResponse("ok")

django中邮件、日志的配置的更多相关文章

  1. Django 中的 日志处理

    日志处理: 上线后必须使用 便于以后的 维护 管理 根据日志 处理 BUG 在 项目中 定义一个 存放日志的 文件夹 log 存放所有 等级 的 日志 配置: 将下面的日志的 配置 写入 django ...

  2. django之logo日志的配置和使用

    一:为什么使用日志 假如,在项目调试过程中,在某些地方加上了print()函数,输出了一些调试信息.在项目上线的时候,不要将调试信息暴露出去,但是调试信息还要用,该怎么办?项目测试运行在远端服务器上, ...

  3. 测试开发之Django——No4.Django中前端框架的配置与添加

    我们在开发一个web项目的时候,虽然我们不是专业开发,但是我们也想要做出来一个美美的前端页面. 这种时候,百度上铺天盖地的前端框架就是我们的最好选择了. 当然,在网上直接下载的框架,我们是不能直接用的 ...

  4. django中的setting最佳配置小结

    Django settings详解 1.基础 DJANGO_SETTING_MODULE环境变量:让settings模块被包含到python可以找到的目录下,开发情况下不需要,我们通常会在当前文件夹运 ...

  5. Django 的 logging日志文件配置

    在Django的settings配置文件里配置以下信息: import os BASE_LOG_DIR = os.path.join(BASE_DIR , "log") # log ...

  6. django中添加日志功能

    官方文档 猛戳这里 在settings中配置以下代码 #LOGGING_DIR 日志文件存放目录 LOGGING_DIR = "logs" # 日志存放路径 if not os.p ...

  7. Django中的 动态URL配置

    举个例子,一家在线书店会为每一本书提供一个URL,如:/books/243/./books/81196/. 让我们创建第三个视图来显示当前时间和加上时间偏差量的时间,设计是这样的: /time/plu ...

  8. Spring MVC中 log4j日志文件配置相对路径

    log4j和web.xml配置webAppRootKey 的问题 1 在web.xml配置 <context-param>  <param-name>webAppRootKey ...

  9. Django 中Admin站点的配置

    Admin站点是django提供的一个后台管理页面,可以用来对用户与数据库表数据进行管理. Admin站点配置流程 1.在settings.py文件中INSTALL_APPS列表中添加django.c ...

随机推荐

  1. MSMQ 跨服务器读写队列的“消息队列系统的访问被拒绝”的解决方案

    转自https://www.cnblogs.com/jyz/articles/4612333.html 最近项目中需要跨服务器对消息队列进行读写,开始在单独开发机器上进行Queue的读写没问题.但是部 ...

  2. 17.2-uC/OS-III消息管理(任务消息队列)

    1.任务的消息队列 uC/OS-III在任务中内建了一个消息队列.用户可以直接发送消息给任务而不通过外部消息队列. 这个特性不仅简化了代码, 还提供了效率.每个任务都内建一个消息队列. uC/OS-I ...

  3. Mac开发工具汇总

    1: Json Parser Mac版 http://www.pc6.com/mac/180470.html

  4. windows程序设计 Unicode和多字节

    Unicode和多字节 Unicode是宽字符 多字节是窄字符 类型 变量类型 初始化方式 Unicode LPWSTR L"string" 多字节 LPSTR "str ...

  5. nginx rewrite 指令

    ginx通过ngx_http_rewrite_module模块支持url重写.支持if条件判断,但不支持else. 该模块需要PCRE支持,应在编译nginx时指定PCRE源码目录, nginx安装方 ...

  6. axios的基本概念及安装配置方法

    ajax:异步请求,是一种无需再重新加载整个网页的情况下,能够更新部分网页的技术 axios:用于浏览器和node.js的基于promise的HTTP客户端 1.从浏览器制作XMLHttpReques ...

  7. python3内置的tkinter参数释疑

    最近涉及到需要实现一个桌面UI的小游戏,所以就翻看了一些文档. 当然有介绍使用pyQT5的,但是本机安装的是python3.4,不想卸载掉这个版本,暂时还不能使用pyQT5. pyQT5需要pytho ...

  8. xxnet to google部署

    1,github上下载xxnet项目 2,启动(点击 start) 3,确定启动好后访问 www.google.com (此时是可以访问的) 4,注册google账号或直接登陆 5,访问 https: ...

  9. 【python】python嵌套循环内层循环只执行一次

    今天写了一个两个基因集找相同的基因然后输出这么个小程序就无论如何也跑不起来,原因出在循环嵌套上,这方面之前就出过问题,后来阴差阳错的就好了我也没太注意,但是最近这个问题严重制约了工作效率,我决心找到问 ...

  10. JavaScript 示例

    JavaScript 示例 <html lang="en"> <head> <meta charset="UTF-8"> & ...