django项目搭建3 用户激活

我们给用户注册成功以后,会根据他的邮箱给他发送一个激活短信,用户得到发送过来的短信点击进去激活,就可以直接跳转到登陆页面,点击激活以后,Is_active会从0值为1,中间有个重要的过程就是对用户的id进行加密,因为我们要用来判断是哪个用户注册了,就根据唯一标识id来获取用户的邮箱,具体代码如下:

首先进入settings.py设置邮箱发送方:

# 发送邮件配置
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
# smpt服务地址
EMAIL_HOST = 'smtp.163.com'
EMAIL_PORT = 25
# 发送邮件的邮箱
EMAIL_HOST_USER = '@163.com'
# 在邮箱中设置的客户端授权密码
EMAIL_HOST_PASSWORD = '123456'
# 收件人看到的发件人
EMAIL_FROM = '天天生鲜<@163.com>'

然后就是我们的注册验证过程的邮箱加密 user.views.py:

#类视图
class registerView(View):
    '''判断请求方式,如果是get请求,证明就是请求到注册页面,如果是post请求证明是注册提交审核'''
    def get(self,request):
        return render(request,'register.html',{})

    def post(self,request):
        '''用户注册验证'''
        # 获取注册信息
        username = request.POST.get('user_name')
        password = request.POST.get('pwd')
        email = request.POST.get('email')
        allow = request.POST.get('allow')

        # 进行用户信息校验 all方法就是用来判断3个信息是否一致,都一致为真返回true,否之,false
        if not all([username, password, email]):
            return render(request, 'register.html', {'errmsg': '数据不完整'})
        # 主要就是用来校验邮箱是否合法,
        if not re.match(r'^[a-z0-9][\w.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$', email):
            return render(request, 'register.html', {'errmsg': '邮箱不合法'})

        # 校验用户是否勾选同意协议
        if allow != 'on':
            return render(request, 'register.html', {'errmsg': '请勾选协议'})
        # 判断注册用户是否以存在,如果不存在就值为空,因为如果查找不到回抛出异常
        try:
            user = User.objects.get(username=username)
        except User.DoesNotExist:
            user = None
        if user:
            return render(request, 'register.html', {'errmsg': '用户名已存在'})

        # 将注册信息添加到数据库表中
        user = User.objects.create_user(username, email, password)
        # #将用户激活状态值为0,因为我们创建默认是激活的
        user.is_active = 0
        user.save()
        # 用户邮箱发送激活验证,验证通过就激活,根据唯一标识id来判断是哪个用户
        # 发送的,对用户的id进行加密,防止发生安全隐患
        serializer = Serializer(settings.SECRET_KEY, 3600)  # 加密方式,加密时间
        info = {'confirm': user.id}  # 获取用户id
        token = serializer.dumps(info)  # 对用户id进行加密
        token = token.decode()  # 默认加密后是byte类型,解密为utf8
        # 发送邮件
        subject = '天天生鲜给你一封邮件'  # 邮件主题
        message = ''  # 邮件内容
        sendir = settings.EMAIL_FROM  # 发送方
        receiver = [email]
        html_message = '<h1>%s,天天生鲜欢迎你到来</h1>请点击以下链接进行激活<br/><a href="http://127.0.0.1:8000/user/active/%s">点击我进行激活</a>' % (
        username, token)
        send_mail(subject=subject, message=message, from_email=sendir, recipient_list=receiver,
                  html_message=html_message)

        # 防止url逆向,
        return redirect(reverse('goods:index'))


class ActiveView(View):
    def get(self,request,token):
        # 对用户信息进行解密
        serializer = Serializer(settings.SECRET_KEY, 3600)
        try:
            info = serializer.loads(token)
            user_id = info['confirm']  # 获取解密id
            user = User.objects.get(id=user_id)  # 获取用户信息
            user.is_active = 1  # 激活
            user.save()
            # 跳转到登陆页面
            return redirect(reverse('user:login'))
        except SignatureExpired as e:
            return HttpResponse('对不起,激活时间过期')

class LoginView(View):
    def get(self,request):
        return render(request, 'login.html', {})

User.urls.py:

from django.urls import re_path
from user import views
from user.views import registerView,ActiveView,LoginView
re_path(r'^registerview$',registerView.as_view(),name='register'),#用户注册和验证一体
re_path(r'^activeview/(?P<token>.*)$',ActiveView.as_view(),name='active'),#用户激活
re_path(r'^loginview$',LoginView.as_view(),name='login'),#用户登陆

最后就是看下我们发送的邮箱是否成功:

数据库用户信息及激活状态,is_active代表以及激活:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在服务器上 Django 架构的步骤如下: 1. 安装 Python:确保服务器上安装了 Python。你可以通过运行以下命令检查是否已安装 Python: ``` python --version ``` 2. 安装虚拟环境:为了隔离项目依赖,议在服务器上创一个 Python 虚拟环境。可以使用以下命令安装虚拟环境工具 `virtualenv`: ``` pip install virtualenv ``` 3. 创虚拟环境:在合适的目录下创激活一个新的虚拟环境,例如: ``` virtualenv myenv source myenv/bin/activate ``` 4. 安装 Django:在激活的虚拟环境中,使用以下命令安装 Django: ``` pip install Django ``` 5. 创 Django 项目:使用以下命令创一个新的 Django 项目: ``` django-admin startproject myproject ``` 6. 运行开发服务器:进入项目目录并启动 Django 的开发服务器: ``` cd myproject python manage.py runserver 0.0.0.0:8000 ``` 7. 配置数据库:根据你的需求配置数据库。默认情况下,Django 使用 SQLite3。你可以在 `settings.py` 文件中修改数据库设置。 8. 设置静态文件和媒体文件:在 `settings.py` 文件中配置静态文件和媒体文件的路径。 9. 配置生产服务器:如果你要在生产环境中部署 Django 项目议使用 Gunicorn 或 uWSGI 作为生产服务器。你需要根据服务器和部署方式进行相应的配置。 以上是在服务器上 Django 架构的基本步骤。根据具体的需求和环境,你可能还需要进行一些额外的配置和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值