富文本编辑器、激活邮箱

富文本编辑器

模块:

安装: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('激活链接已过期')
 

猜你喜欢

转载自www.cnblogs.com/wukai66/p/11880753.html