django项目搭建2 用户注册

首先可以直接进入到用户注册页面,用户填写用户名,密码和邮箱,然后填写完后点击提交就会跳转到视图层的register_handle审核阶段,用户名,密码和邮箱这三个是缺一不可,所以注册的时候要对这三个进行判断,就可以用到all()方法,然后会对邮箱的格式进行判断,最后就是user.objects.create_user()这个方法的将用户注册信息保存到df_user这个表中,注册成功以后跳转到首页:

Register.html   form表单跳转视图验证:

<div class="reg_form clearfix">
   <form method="post" action="/user/register_handle">
                 {% csrf_token %}
   <ul>

User/views.py  视图验证:

from django.shortcuts import render,redirect
from django.urls import reverse
import re
from user.models import User
# Create your views here.

def register(request):
    '''用户注册'''
    return render(request,'register.html',{})


def register_handle(request):
    '''用户注册验证'''
    #获取注册信息
    username=request.POST.get('user_name')
    password=request.POST.get('pwd')
    email=request.POST.get('email')
    allow=request.POST.get('allow')

    #进行用户信息校验 all方法就是用来判断3个信息是否一致,都一致为真返回true,否之,false
    if not all([username,password,email]):
        return render(request,'register.html',{'errmsg':'数据不完整'})
    #主要就是用来校验邮箱是否合法,
    if not re.match(r'^[a-z0-9][\w.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$',email):
        return render(request,'register.html',{'errmsg':'邮箱不合法'})

    #校验用户是否勾选同意协议
    if allow!='on':
        return render(request,'register.html',{'errmsg':'请勾选协议'})

    #将注册信息添加到数据库表中
    user=User.objects.create_user(username,email,password)
    # user=User()
    # user.username=username
    # user.password=password
    # user.email=email
    # #将用户激活状态值为0,因为我们创建默认是激活的
    user.is_active=0
    user.save()
    #防止url逆向,对应是一个默认的urls里面的namespace和goods.urls里面的name 
    return redirect(reverse('goods:index'))

user.urls.py  过滤:

urlpatterns = [
    re_path(r'^register$',views.register,name='register'),#用户注册
    re_path(r'^register_handle$',views.register_handle,name='register_handle'),#用户注册验证
]

跳转到首页goods.views.py:

def index(request):
    '''首页'''
    return render(request,'index.html',{})

goods.urls.py:

re_path(r'',views.index,name='index'),#就是在你什么都不输入网址的情况下,回自动跳到首页

 

最后就是提一下:就是ABstractBaseUser和ABstractUser的区别:

The documentation explains this fully. AbstractUser is a full User model, complete with fields, as an abstract class so that you can inherit from it and add your own profile fields and methods. AbstractBaseUser only contains the authentication functionality, but no actual fields: you have to supply them when you subclass.

The AbstractUser is basically just the "User" class you're probably already used to. AbstractBaseUser makes fewer assumptions and you have to tell it what field represents the username, what fields are required, and how to manage those users.

文档充分解释了这一点。 AbstractUser是一个完整的用户模型,包含字段,作为一个抽象类,以便您可以继承它并添加您自己的配置文件字段和方法。 AbstractBaseUser仅包含身份验证功能,但不包含实际字段:当您继承子类时,您必须提供它们。

AbstractUser基本上就是您可能已经习惯的“用户”类。 AbstractBaseUser的继承较少,您必须告诉它哪个字段代表用户名,需要哪些字段以及如何管理这些用户。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值