一个简单的小项目博客园(2)登录、注册页面

本文详细介绍了如何在Django项目中实现登录和注册功能。注册部分利用forms组件进行解耦合,创建了myforms.py文件,并处理前端页面逻辑。登录功能则涉及到验证码的生成,包括PIL模块的使用、ttf字体文件和验证码图片的处理,以及后端接口返回二进制验证码图片的逻辑。
摘要由CSDN通过智能技术生成

目录:

  1. 注册功能(使用forms组件)
  2. 登录功能(使用验证码)

注册功能(使用forms组件)

  1. 解耦合在app01中创建myforms.py
    from django import forms
    from django.forms import widgets
    from app01 import models
    
    
    class RegForm(forms.Form):
        username = forms.CharField(max_length=8, min_length=3, label='用户名', error_messages={
         
            'max_length': '用户名最大8位',
            'min_length': '用户名最小3位',
            'required': '用户名不能为空',
        }, widget=widgets.TextInput(attrs={
         "class": 'form-control'}))
        password = forms.CharField(max_length=8, min_length=3, label='密码', error_messages={
         
            'max_length': '密码最大8位',
            'min_length': '密码最小3位',
            'required': '密码不能为空',
        }, widget=widgets.PasswordInput(attrs={
         "class": 'form-control'}))
        confirm_password = forms.CharField(max_length=8, min_length=3, label='确认密码', error_messages={
         
            'max_length': '再次确认的密码最大8位',
            'min_length': '再次确认的密码最小3位',
            'required': '再次确认的密码不能为空',
        }, widget=widgets.PasswordInput(attrs={
         "class": 'form-control'}))
        email = forms.EmailField(label='邮箱', error_messages={
         
            'invalid': '邮箱格式不正确',
            'required': '邮箱不能为空'
        }, widget=widgets.EmailInput(attrs={
         "class": 'form-control'}))
    
        # 局部钩子,校验用户名是否存在
        def clean_username(self):
            username = self.cleaned_data.get('username')
            is_user = models.UserInfo.objects.filter(username=username)
            if is_user:
                self.add_error('username', '用户名已存在')
            return username
    
        # 全部钩子,校验密码是否一致
        def clean(self):
            password = self.cleaned_data.get('password')
            confirm_password = self.cleaned_data.get('confirm_password')
            if not password == confirm_password:
                self.add_error('confirm_password', '两次密码不一致')
            return self.cleaned_data
    
  2. 注册逻辑
    from django.shortcuts import render, redirect, HttpResponse
    from app01 import myforms
    from app01 import models
    from django.http import JsonResponse
    
    
    # Create your views here.
    def register(request):
    # 内部状态码
    back_dic = {
         'code': 100, 'msg': ''}
    form_obj = myforms.RegForm()
    if request.method == 'POST':
        form_obj = myforms.RegForm(request.POST)
        if form_obj.is_valid():
            clean_data = form_obj.cleaned_data
            clean_data.pop('confirm_password')
            avatar = request.FILES.get('myfile')
            if avatar:
                clean_data['avatar'] = avatar
            models.UserInfo.objects.create_user(**clean_data)
            back_dic['msg'] = '注册成功'
            back_dic['url'] = '/login/'
        else:
            back_dic['msg'] = form_obj.errors
            back_dic['code'] = 201
        return JsonResponse(back_dic)
    return render(request, 'register.html', locals())
    
  3. 前端页面
    <!DOCTYPE html>
    <html lang
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值