1、登录
在项目公共目录下新建forms.py这是默认名字
这里两个字段用户名,密码,密码指定密码格式
单独建立login.html
修改总的views.py
文章模板页面评论部分
对应效果
可以直接用form进行用户名和密码的验证,使功能更加清晰
先修改forms.py进行验证,并把用户传回
再修改一下对应方法即可
现在在用bootstarp进行一些美化
修改forms文件,自定义一些属性,包括使用css类,框内提示等
再修改login.html,将表单放入对应的bootstrap容器和面板里
注释那段可以把表单拆开,来自定义一些显示
效果
2进行注册操作
先修改forms.py
class RegForm(forms.Form):
username = forms.CharField(label='用户名',
max_length=20,
min_length=3,
widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': '请输入3至20用户名'}))
email = forms.EmailField(label='邮箱',
widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': '请输入邮箱名'}))
password = forms.CharField(label='密码',
min_length=6,
widget=forms.PasswordInput(attrs={'class': 'form-control', 'placeholder': '请输入密码'}))
password_again = forms.CharField(label='再输入一次密码',
min_length=6,
widget=forms.PasswordInput(
attrs={'class': 'form-control', 'placeholder': '请输入密码'}))
#验证用户是否存在
def clean_username(self):
username = self.cleaned_data['username']
if User.objects.filter(username=username).exists():
raise forms.ValidationError('用户名已存在')
return username
#验证邮箱是否存在
def clean_email(self):
email = self.cleaned_data['email']
if User.objects.filter(email=email).exists():
raise forms.ValidationError('邮箱已存在')
return email
#验证密码是否一致
def clean_password_again(self):
password = self.cleaned_data['password']
password_again = self.cleaned_data['password_again']
if password != password_again:
raise forms.ValidationError('两次输入的密码不一致')
return password_again
对应url
修改views.py增加注册方法
修改对应模板页面
{%extends 'base.html'%}
{%block title%}
我的网站|注册
{%endblock%}
{%block nav_home_active%}
active
{%endblock%}
{%block content%}
<div class="cotainer">
<div class="row">
<div class="col-xs-4 col-xs-offset-4">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">注册</h3>
</div>
<div class="panel-body">
<form action="#" method="POST">
{%csrf_token%}
<!--
{{reg_form}}
-->
{%for field in reg_form%}
<label for="{{field.id_for_label}}">{{field.label}}</label>
{{field}}
<p class="text-danger">{{field.errors.as_text}}</p>
{%endfor%}
<span class="pull-left text-danger">{{reg_form.non_field_errors}}</span>
<input type="submit" value="提交" class="btn btn-primary pull-right">
</form>
</div>
</div>
</div>
</div>
</div>
{% endblock %}
改一下博客的模板页面