注册视图
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.查看注册页面