首页 > 编程 > Python > 正文

Python通过Django实现用户注册和邮箱验证功能代码

2020-02-16 11:02:29
字体:
来源:转载
供稿:网友

本文主要向大家分享了Python编程中通过Django模块实现用户注册以及邮箱验证功能的简单介绍及代码实现,具体如下。

用户注册:

类似于用户登陆,同样在users.views.py中添加RegisterView(View)类,其中对表单的get和post作出处理。
如果是get方法,重新返回register页面让用户进行填写。

 def get(self, request):  register_form = RegisterForm()  return render(request, "register.html", {'register_form':register_form})

method = POST时,用户注册逻辑:

 def post(self, request):  # 实例化form,验证每个字段是否合法  register_form = RegisterForm(request.POST)  pre_check = register_form.is_valid()  if pre_check:   # 取出email和password   user_name = request.POST.get("email", "")   pass_word = request.POST.get("password", "")   # 实例化用户,然后赋值   user_profile = UserProfile()   user_profile.username = user_name   user_profile.email = user_name   # 新建用户为非活跃用户,可通过验证变为活跃用户   user_profile.is_active = False   # 将明文转换为密文赋给password   user_profile.password = make_password(pass_word)   user_profile.save() # 保存到数据库   # 此处加入了邮箱验证的手段   send_register_email(user_name, "register")   return render(request, "login.html")  else:   # form表单验证失败,将错误信息传给前端   return render(request, "register.html", {"register_form": register_form})

在form.py中添加RegisterForm类对给出表单处理类:

class RegisterForm(forms.Form): # 不能为空 email = forms.EmailField(required=True) password = forms.CharField(required=True, min_length=6, max_length=20) # 出错信息 captcha = CaptchaField(error_messages={"invalid":u"验证码错误"})

以下为对应的前端代码,其中添加了了django的模版用法,均以{% %}的形式在html中加入逻辑, 避免了python代码的直接插入,方便维护和修改。

<form id="email_register_form" method="post" action="{% url 'register' %}" autocomplete="off">      <div class="form-group marb20 {% if register_form.errors.email %}errorput{% endif %}">       <label>邮     箱</label>       <input type="text" id="id_email" name="email" value="{{ register_form.email.value }}" placeholder="请输入您的邮箱地址" />      </div>      <div class="form-group marb8 {% if register_form.errors.password %}errorput{% endif %}">       <label>密     码</label>       <input type="password" id="id_password" name="password" value="{{ register_form.password.value }}" placeholder="请输入6-20位非中文字符密码" />      </div>      <div class="form-group marb8 captcha1 {% if register_form.errors.captcha %}errorput{% endif %}">       <label>验 证 码</label>       {{ register_form.captcha }}      </div>      <div class="error btns" id="jsEmailTips">{% for key,error in register_form.errors.items %}{{ error }}{% endfor %} {{ msg }}</div>      <div class="auto-box marb8">      </div>      <input class="btn btn-green" id="jsEmailRegBtn" type="submit" value="注册并登录" />      {% csrf_token %}     </form>            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表