目录
-
验证登录
def index(request): # 在后端判断是否登录 print(request.user.is_authenticated) return render(request,'index.html')
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> {% if request.user.is_authenticated %} {{ request.user.username }} <a href="{% url 'App02:logout' %}">退出登录</a> {% else %} 你还没有登录,请先 <a href="{% url 'App02:login' %}">登录</a> {% endif %} </body> </html>
-
注册
def user_register(request): if request.method == "POST": form = RegisterForm(request.POST) if form.is_valid(): data = form.cleaned_data data.pop("confirm") # 把用户写入数据库 # 密码会做签名,不能手动签名加密password user = User.objects.create_user(**data) if user: return HttpResponse("注册成功") else: return render(request, "register.html",{'form':form}) else: return render(request, "register.html", {'form': form}) # get请求 return render(request, "register.html")
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>注册</title> </head> <body> <form action="{% url 'App02:user_register' %}" method="post"> {% csrf_token %} 用户名:<input type="text" name="username"> {% for error in form.username.errors %} <span>{{ error }}</span> {% endfor %} <br> 密码:<input type="password" name="password"> {{ form.password.errors }} <br> 确认密码:<input type="password" name="confirm"> {{ form.confirm.errors }} <br> 注册时间:<input type="text" name="regtime"> {{ form.regtime.errors }} <br> 性别:<input type="radio" name="sex" value="0">女 <input type="radio" name="sex" value="1"> 男 {{ form.sex.errors }} <br> <input type="submit" value="注册"> </form> </body> </html>
from django import forms from django.core.exceptions import ValidationError from django.forms.utils import ErrorList class RegisterForm(forms.Form): def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=ErrorList, label_suffix=None, empty_permitted=False, field_order=None, use_required_attribute=None, renderer=None,request=None): super().__init__(data,files,auto_id,prefix,label_suffix,empty_permitted,field_order,use_required_attribute,renderer) self.request = request username = forms.CharField(min_length=3,required=True,error_messages={ 'required':'用户名必须输入', 'min_length':'用户名至少3个字符' }) password = forms.CharField(min_length=3,required=True,error_messages={ 'required': '密码名必须输入', 'min_length': '密码至少3个字符' }) confirm = forms.CharField(min_length=3,required=True,error_messages={ 'required': '密码名必须输入', 'min_length': '密码至少3个字符' }) regtime = forms.DateTimeField(required=False,error_messages={ 'invalid':'日期格式错误', }) sex = forms.BooleanField(required=False) # 单个字段验证: clean_xxxx def clean_password(self): password = self.cleaned_data.get('password') if password and password.isdigit(): raise ValidationError("密码不能是纯数字") return password # 全局验证 def clean(self): password = self.cleaned_data.get('password',None) confirm = self.cleaned_data.get('confirm','') print(password,confirm) if password != confirm: raise ValidationError({'confirm':"两次密码输入不一致"}) return self.cleaned_data