注册视图
注冊視圖
1.設(shè)計(jì)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='驗(yàn)證碼')2.注冊頁面
{% extends 'base.html' %} <!--繼承base網(wǎng)頁模板內(nèi)容,可以瀏覽網(wǎng)頁查看效果--> {% block title %}注冊{% endblock %} <!--設(shè)置title,默認(rèn)使用base模板中的-->{% block content %} <!--該模板語言用于定義主體內(nèi)容,和模板中的結(jié)合使用--><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 }} <!--當(dāng)驗(yàn)證碼輸入不正確時(shí)顯示-->{{ register_form.captcha.label_tag }} <!--用于表示label的頁面顯示-->{{ register_form.captcha }} <!--用于captcha的input標(biāo)簽顯示--></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'): #如果是登陸狀態(tài)就跳轉(zhuǎn)至主頁return redirect('/index/')if request.method=='POST': #提交post類型的表單數(shù)據(jù)register_form=forms.RegisterForm(request.POST) #把注冊的form表單存儲到register_form變量中message='請檢查填寫的內(nèi)容!' #這個(gè)是用于提示輸入有誤的反饋?zhàn)兞縤f register_form.is_valid(): #如果注冊的內(nèi)容合法,就繼續(xù)下面的內(nèi)容#獲取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})#沒問題就進(jìn)行注冊new_user=User()new_user.name=usernamenew_user.password=password1print(email)new_user.email=emailprint(new_user.email)new_user.sex=sexnew_user.save() #保存到表中return redirect('/login/') #注冊完成后跳轉(zhuǎn)到登陸頁面register_form=forms.RegisterForm() #保留輸入的錯(cuò)誤字段return render(request,'login/register.html',{'register_form':register_form}) #這里用于傳遞輸入過的錯(cuò)誤信息到界面# return render(request,'login/register.html') #未登陸就跳轉(zhuǎn)到注冊頁面def logout(request):if not request.session.get('is_login'): #如果登陸狀態(tài)為未登陸return redirect('/index/') #就跳轉(zhuǎn)至主頁(也就是依然停留在當(dāng)前頁面)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后就進(jìn)入判斷語句--><li><a href="#">當(dāng)前在線:{{ request.session.user_name }}</a></li> <!--這里顯示的是views文件中輸入的username,也就是當(dāng)前登陸成功的用戶名--><li><a href="/logout/">登出</a></li> <!--導(dǎo)航條點(diǎn)擊登出跳轉(zhuǎn)至登出頁面-->{% else %} <!--如果登陸成功就不會執(zhí)行下面的代碼,避免出現(xiàn)登陸成功后依然顯示注冊登陸的情況,另外登出或未登陸時(shí)訪問網(wǎng)頁才會出現(xiàn)下面的內(nèi)容--><li><a href="/register/"><span class="glyphicon glyphicon-user"></span> 注冊</a></li> <!--導(dǎo)航條點(diǎn)擊注冊跳轉(zhuǎn)至注冊頁面--><li><a href="/login/"><span class="glyphicon glyphicon-log-in"></span> 登錄</a></li> <!--導(dǎo)航條點(diǎn)擊登陸跳轉(zhuǎn)至登陸頁面-->{% endif %}</ul></div></nav>{% block content %}{% endblock %} <!--為具體主體內(nèi)容留下接口-->5.查看注冊頁面
轉(zhuǎn)載于:https://www.cnblogs.com/endmoon/p/9744752.html
總結(jié)
- 上一篇: leetcode347 - Top K
- 下一篇: gitlab的搭建与汉化