【django+xadmin实战】0201笔记——用户模块(2)

这篇博客详细介绍了如何在Django中结合xadmin实现用户模块的功能,包括安装和配置Django Simple Captcha进行验证码设置,创建注册表单并实现前端验证,编写视图函数处理注册逻辑,以及用户注销功能的实现。通过此篇,读者可以了解到Django后端验证、URL配置和前端交互的相关知识。
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})

3url的配置:
    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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</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>&nbsp;&nbsp;</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.用户注销的实现
1view类的实现
    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"))
2url的配置: url('^logout/$', LogoutView.as_view(), name="logout"),
3)前端配置:<a class="fr" href="{% url 'logout' %}">退出</a>

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值