1.(验证码配置)安装Django Simple Captcha,加入'captcha',添加url路径(url(r'^captcha/', include('captcha.urls'))),mm迁移操作; 配置文档:http://django-simple-captcha.readthedocs.io/en/latest/usage.html#installation 2.(验证码实现) class RegisterForm(forms.Form): email = forms.EmailField(required=True) password = forms.CharField(required=True, min_length=5) captcha = CaptchaField() def get(self, request): register_form = RegisterForm() return render(request, "register.html", {'register_form':register_form}) 前端界面配置:{{register_form.captcha }} 3.注册功能具体实现 (1)后端验证:对于web项目,即使在前端已经做了验证以外,后端工程师依然需要做验证工作 from captcha.fields import CaptchaField class RegisterForm(forms.Form): #传入的必须是邮箱啊! email = forms.EmailField(required=True) password = forms.CharField(required=True, min_length=5) captcha = CaptchaField(error_messages={"invalid": u"验证码错误"}) (2)编写view def post(self, request): #一定要输入的是邮箱地址名 register_form = RegisterForm(request.POST) if register_form.is_valid(): user_name = request.POST.get("email", "") if UserProfile.objects.filter(email=user_name): return render(request, "register.html", {"register_form": register_form, "msg": "用户已经存在"}) user_password = request.POST.get("password", "") user_profile = UserProfile() user_profile.username = user_name user_profile.email = user_name user_profile.password = make_password(user_password) user_profile.save() return render(request, "index.html") else: return render(request, "register.html", {"register_form": register_form}) (3)url的配置: url('^register/$', RegisterView.as_view(), name="register") (4)前端界面的配置: <div class="tab-form"> <form id="email_register_form" method="post" action="{% url 'register' %}" autocomplete="off"> <input type='hidden' name='csrfmiddlewaretoken' value='gTZljXgnpvxn0fKZ1XkWrM1PrCGSjiCZ' /> <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="注册并登录" /> <input type='hidden' name='csrfmiddlewaretoken' value='5I2SlleZJOMUX9QbwYLUIAOshdrdpRcy' /> {% csrf_token %} </form> </div> 4.用户注销的实现 (1)view类的实现 from django.contrib.auth import logout from django.http import HttpResponse, HttpResponseRedirect from django.core.urlresolvers import reverse class LogoutView(View): """ 用户登出 """ def get(self, request): logout(request) return HttpResponseRedirect(reverse("index")) (2)url的配置: url('^logout/$', LogoutView.as_view(), name="logout"), (3)前端配置:<a class="fr" href="{% url 'logout' %}">退出</a>
【django+xadmin实战】0201笔记——用户模块(2)
最新推荐文章于 2021-08-10 15:53:34 发布
这篇博客详细介绍了如何在Django中结合xadmin实现用户模块的功能,包括安装和配置Django Simple Captcha进行验证码设置,创建注册表单并实现前端验证,编写视图函数处理注册逻辑,以及用户注销功能的实现。通过此篇,读者可以了解到Django后端验证、URL配置和前端交互的相关知识。
&spm=1001.2101.3001.5002&articleId=79234311&d=1&t=3&u=3d65e4edc4e347c4afa9499b021e21fb)
344

被折叠的 条评论
为什么被折叠?



