富文本编辑器
模块:
安装:pip3 install tinymce
django中settings配置:
# 富文本编辑器配置 TINYMCE_DEFAULT_CONFIG = { 'theme': 'advanced', 'width': 600, 'height': 400, }
模型表:
from tinymce.models import HTMLField
class Goods(BaseModel): '''商品通用SPU模型类''' name = models.CharField(max_length=20, verbose_name='商品SPU名称') # 富文本类型:带有格式的文本(编辑文字类型) detail = HTMLField(blank=True, verbose_name='商品详情') class Meta: db_table = 'tt_goods' verbose_name = '商品SPU' verbose_name_plural = verbose_name
激活邮件:
1.在网易邮箱注册163,2.在设置中找到客户端授权密码
3.django配置:
# 发送邮件配置 EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' # smtp服务地址 EMAIL_HOST = 'smtp.163.com' # 端口号是固定的 EMAIL_PORT = 25 #发送邮件的邮箱 EMAIL_HOST_USER = '[email protected]' #在邮箱中设置的客户端授权密码 EMAIL_HOST_PASSWORD = 'huang123' #收件人看到的发件人 EMAIL_FROM = 'python<[email protected]>'
4.django发送邮件模块:
from django.core.mail import send_mail
from itsdangerous import TimedJSONWebSignatureSerializer, SignatureExpired # 加密解密模块,异常模块
5.视图类逻辑:
# 发送激活邮件,包含激活链接:http://127.0.0.1/user/active # 激活链接中需要包含用户的身份信息,并且要把身份信息进行加密,还可以进行解密:使用模块:itsdangerous # 加密用户的身份信息,生成激活token,用django秘钥作为加密数据,后面是过期时间 serializer = TimedJSONWebSignatureSerializer(settings.SECRET_KEY, 3600) info = {'confirm': user_obj.id} token = serializer.dumps(info) # 把用户信息进行加密 token = token.decode('utf8') # 把token格式转为utf8 # 发邮件 subject = '真香蔬果欢迎信息' message = "" html_message = '<h1>%s,欢迎您成为真香蔬果注册会员</h1>请点击以下链接激活用户<br/><a href="http://127.0.0.1:8000/user/active/%s">http://127.0.0.1:8000/user/active/%s</a>' % ( username, token, token) # 把html标签渲染 sender = settings.EMAIL_FROM # 发件人 receiver = [email] # 收件人 send_mail(subject, message, sender, receiver,html_message=html_message) return redirect(reverse('goods:home'))
class ActiveView(View): '''用户激活''' def get(self, request, *args, **kwargs): token = kwargs.get('token') # 进行解密,获取要激活的用户信息 serializer = TimedJSONWebSignatureSerializer(settings.SECRET_KEY, 3600) try: info = serializer.loads(token) user_id = info.get('confirm') models.User.objects.filter(id=user_id).update(is_active=1) return redirect(reverse('user:login')) except SignatureExpired as e: # 激活链接过期 return HttpResponse('激活链接已过期')