Django项目: 3.用户注册功能

本章内容的补充知识点

导入库的良好顺序:

1.系统库 2.django库 3.自己定义的库(第三方库)

redis缓存数据库的数据调用速度快,但是不利于长时间保存。

mysql用于长时间存储,但是调用比较慢。

session会话存储的内容(以字典的方式存放)放在redis缓存里面,要设置过期时间

用户注册功能

一、用户模型设计

1. 用户表字段分析

  • 用户名
  • 密码
  • 手机号
  • 邮箱

2.用户模型设计

django的强大之处在于开发效率高,内置了权限模块之类的很多常用功能。在开始一个新的django项目时,如果权限模块中的User模型不满足项目要求,我们需要扩展或者自定义User模型。

扩展User模型有两种方法

  1. 如果你不需要改变数据库存储内容,只是改变行为,那么可以建立有一个基于User模型的代理模型。
  2. 如果想存储与User模型关联的信息,可以使用OneToOneField到包含其他信息字段的模型。这种one-to-one模型经常被称作Profile模型,因为它可能存储站点用户的非身份验证的相关信息。例如:
    from django.contrib.auth.models import User
    
    class Employee(models.Model):
        user = models.OneToOneField(User, on_delete=models.CASCADE)
        department = models.CharField(max_length=100)

自定义User模型

如果不想使用django内置的权限系统,当然你需要自定义用户模型,这种情况不讨论。当然也不建议这么做,django内置权限系统有大的自定义功能扩展,而不是重复造轮子。

开启一个新项目,官方强烈推荐用户自定义用户模型,即是默认的用户模型目前已经足够,但是未来可能会要扩展。

from django.contrib.auth.models import AbstractUser

class User(AbstractUser):
    pass

注意:不要忘记在settings.py中设置AUTH_USER_MODEL指向它。

一旦已经创立数据库表之后再去修改AUTH_USER_MODEL,会困难很多,因为它会影响外键和多对多关系。这个改动并不能自动完成,需要手动修复(巨坑)。

官方文档

3.用户模型代码

根据上面的分析我们的用户模型代码如下:

from django.db import models
from django.contrib.auth.models import AbstractUser, UserManager as _UserManager

class UserManager(_UserManager):
    """
    自定义 user manager 修改在使用`python manage.py createsuperuser`命令时
    可以提供email
    """
    def create_superuser(self, username, password, email=None, **extra_fields):
        return super().create_superuser(username=username, password=password, email=email, **extra_fields)

class User(AbstractUser):
    """
    add mobile, email_active fields to Django user model.
    """
    mobile = models.CharField(‘手机号‘, max_length=11, unique=True, help_text=‘手机号‘, error_messages={‘unique‘: ‘此手机号码已注册‘})

    email_active = models.BooleanField(‘邮箱状态‘, default=False)

    class Meta:
        db_table = ‘tb_user‘    # 指定数据库表名
        verbose_name = ‘用户‘     # 在admin站点中显示名称
        verbose_name_plural = verbose_name  # 显示复数

    def __str__(self):
        return self.username

    # A list of the field names that will be prompted for
    # when create a user via createsuperuser management command.
    REQUIRED_FIELDS = [‘mobile‘]
    # specify manager
    objects = UserManager()

在settings.py文件中添加如下配置:

# 自定义用户模型
AUTH_USER_MODEL = ‘user.User‘

然后运行命令进行数据库迁移:

# 1. 相当于 在该app下建立 migrations目录,并记录下你所有的关于modes.py的改动,比如0001_initial.py, 但是这个改动还没有作用到数据库文件你可以手动打开这个文件,看看里面是什么
python manage.py makemigrations

# 2. 将该改动作用到数据库文件,比如产生table之类
python manage.py migrate

再创建一个管理用户

(tzproject) ~/code/tztz$ python manage.py createsuperuser
用户名: admin
手机号: 158xxxxxxxx
Password:
Password (again):
密码长度太短。密码必须包含至少 8 个字符。
这个密码太常见了。
Bypass password validation and create user anyway? [y/N]: y
Superuser created successfully.

1.设计接口思路

  • 分析业务逻辑,明确在这个业务中需要涉及到几个相关子业务,将每个子业务党组欧一个接口来设计
  • 分析接口的功能任务,明确接口的访问方式与返回数据:
    • 接口的请求方式,如GET,POST,PUT等
    • 接口的URL路径定义
    • 需要接受的参数及参数格式(如路径参数,查询字符串,请求表单,JSON等)
    • 返回的数据及数据格式

2.注册功能分析

  1. 流程图
  2. 功能

    根据流程图总结注册业务包含如下功能

    • 注册页面
    • 图片验证码
    • 用户名检测是否注册
    • 手机号检测是否注册
    • 短信验证码
    • 注册保存用户数据

    因为图片验证码,短信验证码考虑到后续可能会在其他业务中用到,因此将验证码功能独立出来,创建一个新应用verification

    三、图形验证码功能实现

    1.接口设计

    接口说明:

    类目 说明
    请求方法 GET
    url定义
    /image_code/
    参数格式
    查询参数

原文地址:https://www.cnblogs.com/Tmclri/p/11529951.html

时间: 2024-07-30 19:50:04

Django项目: 3.用户注册功能的相关文章

Web框架之Django_02基本操作(Django项目启动配置、数据库连接、orm、增删改查)

摘要: Django项目简单现实过程 pycharm连接数据库 Django之orm简单操作增删改查 一.新建Django项目.配置.设置: 新建Django项目:(为了熟悉Django操作,暂时全部用cmd形式来实现,很多地方需要手动添加)项目目录D:\Django: >>管理员权限打开cmd,通过cmd命令进入项目目录 >>django-admin startproject my_Dproject (创建项目) >>cd my_Dproject (进入项目文件夹)

用户注册功能

##  用户注册功能 [TOC] ### 一.设计接口思路 - 分析业务逻辑,明确在这个业务中需要涉及到几个相关子业务,将每个子业务当做一个接口来设计 - 分析接口的功能任务,明确接口的访问方式与返回数据: - 接口的请求方式,如GET .POST .PUT等 - 接口的URL路径定义 - 需要前端传递的数据及数据格式(如路径参数.查询字符串.请求体表单.JSON等) - 返回给前端的数据及数据格式 ### 二.功能分析 - 用户名判断是否存在 - 手机号判断是否存在 - 图片验证码 - 短信验

Django Admin后台管理功能使用(学习版)

一.前言: 在创建完Django项目后,每个app下,都会有一个urls.py文件,里边会有如下几行: from django.contrib import admin urlpatterns = [    url(r'^admin/',admin.site.urls), ] 上边看到导入的admin模块 二.主要功能: 功能1:提供数据库管理功能 基于admin模块,可以实现类似数据库客户端的功能,对数据进行增删改查 功能2:二次开发 基于该模块的数据管理功能,可以二次定制一些实用的功能. 三

linux搭建django项目基本步骤

一 linux下django基本项目搭建流程:M model 用于与数据库交互V view 接受前台请求 调用model获取结果,调用T获取页面,返回给前台T template 接受view的要求 生成一个网页给V 1 创建项目命令: django-admin startproject 项目名 2 为项目创建一个应用(django中一个应用就是一个功能模块): 在项目目录下 该目录下有一个manage.py文件 python manage.py startapp 应用名 3 安装应用,将应用与项

.NET MVC 4 实现用户注册功能

初学MVC,踩了不少坑,所以通过实现一个用户注册功能把近段时间学习到的知识梳理一遍,方便以后改进和查阅. 问题清单: l 为什么EF自动生成的表名后自动添加了s? l 如何为数据库初始化一些数据? l 使用WebAPI如何返回JSON? l 让Action接受Get请求 l 如何使路由匹配不同的URL l 如何调试路由 l VS2013如何添加jQuery智能提示? l 为何在Session中的验证码打印出来后与上一次的相同? l 对一个或多个实体的验证失败(或db.SaveChanges不起作

对Django 项目创建之后产生的目录文件的认识

在新建一个Django项目之后,里面会默认创建四个文件: __init__.py manage.py settings.py urls.py 下面解释这些文件的作用: __init__.py Django项目是Python包,这个文件是用来告诉Python这个文件夹当做一个包.在Python术语中,包是一组模块的集合,主要用来把相似的文件分组,防止出现命名冲突. manage.py 这是另外一个有用的脚步用来管理你的项目,你可以把它看做是你项目的的django-admin.py版本,其实,man

Python菜鸟之路:Django Admin后台管理功能使用

前言 用过Django框架的童鞋肯定都知道,在创建完Django项目后,每个app下,都会有一个urls.py文件,里边会有如下几行: from django.contrib import admin urlpatterns = [ url(r'^admin/', admin.site.urls), ] 上边看到导入的admin模块,就是本节所要说的主要内容 主要功能 功能1:提供数据库管理功能 基于admin模块,可以实现类似数据库客户端的功能,对数据进行增删改查 功能2:二次开发 基于该模块

Django项目实践4 - Django网站管理(后台管理员)

http://blog.csdn.net/pipisorry/article/details/45079751 上篇:Django项目实践3 - Django模型 Introduction 对于某一类站点, 管理界面 是基础设施中很重要的一部分. 这是以网页和有限的可信任管理者为基础的界面,它能够让你加入,编辑和删除站点内容. 常见的样例: 你能够用这个界面公布博客,后台的站点管理者用它来润色读者提交的内容,你的客户用你给他们建立的界面工具更新新闻并公布在站点上.这些都是使用管理界面的样例. 创

Python进阶(三十六)-Web框架Django项目搭建全过程

Python进阶(三十六)-Web框架Django项目搭建全过程 ??IDE说明: Win7系统 Python:3.5 Django:1.10 Pymysql:0.7.10 Mysql:5.5 ??Django 是由 Python 开发的一个免费的开源网站框架,可以用于快速搭建高性能,优雅的网站! Django 特点 强大的数据库功能 用python的类继承,几行代码就可以拥有一个丰富,动态的数据库操作接口(API),如果需要你也能执行SQL语句. 自带的强大的后台功能 几行简单的代码就让你的网