django中邮件、日志的配置
邮件的发送及配置
# 配置邮件 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中邮件、日志的配置的更多相关文章
- Django 中的 日志处理
日志处理: 上线后必须使用 便于以后的 维护 管理 根据日志 处理 BUG 在 项目中 定义一个 存放日志的 文件夹 log 存放所有 等级 的 日志 配置: 将下面的日志的 配置 写入 django ...
- django之logo日志的配置和使用
一:为什么使用日志 假如,在项目调试过程中,在某些地方加上了print()函数,输出了一些调试信息.在项目上线的时候,不要将调试信息暴露出去,但是调试信息还要用,该怎么办?项目测试运行在远端服务器上, ...
- 测试开发之Django——No4.Django中前端框架的配置与添加
我们在开发一个web项目的时候,虽然我们不是专业开发,但是我们也想要做出来一个美美的前端页面. 这种时候,百度上铺天盖地的前端框架就是我们的最好选择了. 当然,在网上直接下载的框架,我们是不能直接用的 ...
- django中的setting最佳配置小结
Django settings详解 1.基础 DJANGO_SETTING_MODULE环境变量:让settings模块被包含到python可以找到的目录下,开发情况下不需要,我们通常会在当前文件夹运 ...
- Django 的 logging日志文件配置
在Django的settings配置文件里配置以下信息: import os BASE_LOG_DIR = os.path.join(BASE_DIR , "log") # log ...
- django中添加日志功能
官方文档 猛戳这里 在settings中配置以下代码 #LOGGING_DIR 日志文件存放目录 LOGGING_DIR = "logs" # 日志存放路径 if not os.p ...
- Django中的 动态URL配置
举个例子,一家在线书店会为每一本书提供一个URL,如:/books/243/./books/81196/. 让我们创建第三个视图来显示当前时间和加上时间偏差量的时间,设计是这样的: /time/plu ...
- Spring MVC中 log4j日志文件配置相对路径
log4j和web.xml配置webAppRootKey 的问题 1 在web.xml配置 <context-param> <param-name>webAppRootKey ...
- Django 中Admin站点的配置
Admin站点是django提供的一个后台管理页面,可以用来对用户与数据库表数据进行管理. Admin站点配置流程 1.在settings.py文件中INSTALL_APPS列表中添加django.c ...
随机推荐
- I2C驱动框架 (kernel-3.4.2)
先用韦老师的图: 注: 新版本内核的i2c驱动框架采用了 i2c_client -------> i2c_bus_type <-------- i2c_driver 框架 如 ...
- 构造方法 this super
1 构造方法 1.1 构造方法Constructor概述创建对象要明确属性值,此时需要用到构造方法,即对象创建时要执行的方法,用来给对象的属性进行初始化.在new对象时,知道其执行的构造方法是什么,就 ...
- java框架之SpringMVC(1)-入门&整合MyBatis
前言 SpringMVC简介 SpringMVC 是一个类似于 Struts2 表现层的框架,属于 SpringFramework 的后续产品. 学习SpringMVC的原因 SpringMVC 与 ...
- [py]js前端求和与flask后端求和
index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...
- Lambda表达式详解(例子详解)(转自:http://blog.csdn.net/damon316/article/details/51734661)
Lambda表达式详解(例子详解) lambda简介 lambda运算符:所有的lambda表达式都是用新的lambda运算符 " => ",可以叫他,“转到”或者 ...
- bootstrap-wysiwyg这个坑
但是用wysiwyg也是费了我不少的精力,特别是在图片上传上,下面做一些总结. 1.引入文件 wysiwyg号称只有5kb,但是实际上是将其他的依赖文件在cdn上用外链链接进来了,有以下几个文件: c ...
- 为什么入门首选C语言
对于大部分程序员,C语言是学习编程的第一门语言,很少有不了解C的程序员. C语言除了能让你了解编程的相关概念,带你走进编程的大门,还能让你明白程序的运行原理,比如,计算机的各个部件是如何交互的,程序在 ...
- linux关闭终端响铃
title: linux关闭终端响铃 date: 2018-01-25 15:10:14 tags: linux categories: linux 在终端输入或是直接在.bashrc里添加一行 xs ...
- tiny6410 uboot启动参数的问题
使用uboot来启动tiny6410,需要在启动参数中加入lcd=S70,才能在lcd上显示正确的画面
- vue解决启动报错cjs loader.js Error: Cannot find module '../config'问题
vue解决启动报错cjs loader.js Error: Cannot find module '../config'问题 今天下载了一个开源项目一直运行不了,折腾了半天才找到问题所在,config ...