Django中的Auth和form

Auth

Django内置了强大的用户认证系统auth,它默认使用 auth_user 表来存储用户数据。
在INSTALLED_APPS中添加’django.contrib.auth’使用该APP, auth模块默认启用。
create_superuser():创建一个超级用户。

  • check_password():检查密码是否正确。
  • set_password():修改密码,设置完一定要调用用户对象的save方法。

create_user():创建一个新用户,需要username、password等
User.objects.create_user(username=username, password=password)
登录验证设置session
auth.authenticate():验证用户名和密码是否正确,一般需要username、password,认证成功返回一个User对象。
user = auth.authenticate(username=username, password=password)
auth.login(request, user) # 设置session
auth.logout():调用该函数时,当前请求的session信息会全部清除。该用户即使没有登录,使用该函数也不会报错。
login_requierd():auth给我们提供的一个装饰器工具,用来快捷的给某个视图添加登录校验。

  • 若用户没有登录,则会跳转到django默认的登录URL ‘/accounts/login/’ 并传递当前访问url的绝对路径 (登陆成功后,会重定向到该路径)。
  • 如果需要自定义登录的URL,则需要在settings.py文件中通过LOGIN_URL进行修改。
  • LOGIN_URL = ‘/login/’ # 这里配置成你项目登录页面的路由

form

Form的验证思路
前端:form表单
后台:创建form类,当请求到来时,先匹配,匹配出正确和错误信息。

class RegisterForm(forms.Form):
    # 使用表单做校验
    # 表示username字段必须填写,且最大不超过16字符,最小不低于6字符
    username = forms.CharField(
        required=True,
        max_length=16,
        min_length=6,
        error_messages={
            'required': "注册用户名必须填写",
            'max_length': '注册账号最长不超过16',
            'min_length': '注册账号最小不少于6',
        }
    )
def clean(self):
        # 用户名是否注册
        username = self.cleaned_data.get('username')
        if User.objects.filter(username=username).exists():
            raise forms.ValidationError({'username': '账号已存在!'})
        # 检测重复密码
        pwd1 = self.cleaned_data.get('pwd1')
        pwd2 = self.cleaned_data.get('pwd2')
        if pwd1 != pwd2:
            raise forms.ValidationError({'pwd2': '两次密码不一致'})
        return self.cleaned_data   
def register(request):
    if request.method == 'POST':
    	#使用form
        form = RegisterForm(request.POST)
        if form.is_valid():
        	#验证成功
        	username = form.cleaned_data.get('username')
        	pwd1 = form.cleaned_data.get('pwd1')
        	User.objects.create_user(
        		username = username
        		password = password
        	)
        	return redirect(reverse('login'))
    	return render(request,'register.html',{'errors':form.errors})
        

#前端验证输出
{{ errors.password2 }}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值