zoukankan      html  css  js  c++  java
  • 注册视图

    注册视图

    1.设计forms表单模型

    class RegisterForm(forms.Form):
        gender=(
            ('male',"男"),
            ('female',"女"),
        )
    
        username=forms.CharField(label='用户名',max_length=64,widget=forms.TextInput(attrs={'class':'form-control','placeholder':'用户名'}))
        password1=forms.CharField(label='密码',max_length=512,widget=forms.PasswordInput(attrs={'class':'form-control','placeholder':'密码'}))
        password2 = forms.CharField(label='密码', max_length=512,widget=forms.PasswordInput(attrs={'class': 'form-control', 'placeholder': '密码'}))
        email=forms.EmailField(label='邮箱',widget=forms.EmailInput(attrs={'class':'form-control'}))
        sex=forms.ChoiceField(label='性别',choices=gender)
        captcha=CaptchaField(label='验证码')
    

    2.注册页面

    {% extends 'base.html' %}  <!--继承base网页模板内容,可以浏览网页查看效果-->
    {% block title %}注册{%  endblock %}  <!--设置title,默认使用base模板中的-->
    
    {% block content %}   <!--该模板语言用于定义主体内容,和模板中的结合使用-->
        <div class="container">
            <div class="col-md-4 col-md-offset-4">
              <form class='form-login' action="/register/" method="POST">
                  {% if message %}      <!--类似if语句-->
                      <div class="alert alert-warning">{{ message }}</div>  <!--使用bootstrap的警示传递message信息-->
                  {% endif %}
                  {% csrf_token %}
                  <h2 class="text-center">欢迎注册</h2>
                    <div class="form-group">
                      {{ register_form.username.label_tag }}
                      {{ register_form.username}}
                    </div>
                    <div class="form-group">
                      {{ register_form.password1.label_tag }}
                      {{ register_form.password1 }}
                    </div>
                  <div class="form-group">
                      {{ register_form.password2.label_tag }}
                      {{ register_form.password2 }}
                    </div>
                  <div class="form-group">
                      {{ register_form.email.label_tag }}
                      {{ register_form.email }}
                    </div>
                  <div class="form-group">
                      {{ register_form.sex.label_tag }}
                      {{ register_form.sex }}
                    </div>
                    <div class="form-group">
                        {{ register_form.captcha.errors }}   <!--当验证码输入不正确时显示-->
                        {{ register_form.captcha.label_tag }}  <!--用于表示label的页面显示-->
                        {{ register_form.captcha }}            <!--用于captcha的input标签显示-->
                    </div>
    
                  <button type="reset" class="btn btn-default pull-left">重置</button>
                  <button type="submit" class="btn btn-primary pull-right">提交</button>
              </form>
            </div>
        </div> 
    {% endblock %}
    
    

    3.注册视图

    def register(request):
        if request.session.get('is_login'):     #如果是登陆状态就跳转至主页
            return redirect('/index/')
        if request.method=='POST':             #提交post类型的表单数据
            register_form=forms.RegisterForm(request.POST)      #把注册的form表单存储到register_form变量中
            message='请检查填写的内容!'             #这个是用于提示输入有误的反馈变量
            if register_form.is_valid():            #如果注册的内容合法,就继续下面的内容
                #获取web页面输入框输入的信息
                username=register_form.cleaned_data['username']
                password1=register_form.cleaned_data['password1']
                password2=register_form.cleaned_data['password2']
                email=register_form.cleaned_data['email']
                print(email)
                sex=register_form.cleaned_data['sex']
                #判断输入的两次密码是否一致
                if password1!=password2:        #如果两次输入的密码不一致
                    message='两次密码输入不一致'     #提示输入不一致
                    return render(request,'login/register.html',{'message':message,'register_form':register_form})
                else:
                    user=User.objects.filter(name=username)
                    if user:
                        message='用户名已存在,请重新输入'
                        return render(request,'login/register.html',{'message':message,'register_form':register_form})
                    get_email=User.objects.filter(email=email)
                    if get_email:
                        message='邮箱已被注册,请更换邮箱注册!'
                        return render(request,'login/register.html',{'message':message,'register_form':register_form})
    
                    #没问题就进行注册
                    new_user=User()
                    new_user.name=username
                    new_user.password=password1
                    print(email)
                    new_user.email=email
                    print(new_user.email)
                    new_user.sex=sex
                    new_user.save()         #保存到表中
                    return redirect('/login/')      #注册完成后跳转到登陆页面
        register_form=forms.RegisterForm()      #保留输入的错误字段
        return render(request,'login/register.html',{'register_form':register_form})  #这里用于传递输入过的错误信息到界面
    
    
    
        # return render(request,'login/register.html')    #未登陆就跳转到注册页面
    
    def logout(request):
        if not request.session.get('is_login'):   #如果登陆状态为未登陆
            return redirect('/index/')              #就跳转至主页(也就是依然停留在当前页面)
        request.session.flush()             #清除session记录
        return redirect('/index/')          #返回主页
    
    

    4.修改base模板页面

        <nav class="navbar navbar-default" role="navigation">
        <div class="container-fluid">
            <div class="navbar-header">
                <a class="navbar-brand" href="#">主页</a>
            </div>
            <ul class="nav navbar-nav navbar-right">
                {% if request.session.is_login %}   <!--views.py文件中登陆成功后赋值未True,这里拿到True后就进入判断语句-->
                    <li><a href="#">当前在线:{{ request.session.user_name }}</a></li>   <!--这里显示的是views文件中输入的username,也就是当前登陆成功的用户名-->
                    <li><a href="/logout/">登出</a></li>      <!--导航条点击登出跳转至登出页面-->
                {% else %}   <!--如果登陆成功就不会执行下面的代码,避免出现登陆成功后依然显示注册登陆的情况,另外登出或未登陆时访问网页才会出现下面的内容-->
                <li><a href="/register/"><span class="glyphicon glyphicon-user"></span> 注册</a></li>      <!--导航条点击注册跳转至注册页面-->
                <li><a href="/login/"><span class="glyphicon glyphicon-log-in"></span> 登录</a></li>   <!--导航条点击登陆跳转至登陆页面-->
                {% endif %}
            </ul>
        </div>
        </nav>
      {% block content %}{% endblock %}  <!--为具体主体内容留下接口-->
    

    5.查看注册页面

  • 相关阅读:
    [转]Hibernate Session各种状态转换方法分析
    Hibernate3回顾-4-事务和并发管理
    Hibernate3回顾-3-Session管理
    Hibernate3回顾-2-相关概念
    [转]oracle for update和for update nowait的区别
    数组
    Android 调用webservice faultactor 错误
    Java "==和equals区别" 示例
    Java "==和equals区别"
    Java "double字符串转数字"
  • 原文地址:https://www.cnblogs.com/endmoon/p/9744752.html
Copyright © 2011-2022 走看看