Django扩建auth_user表——小白教小白傻瓜式教程

2024-03-09 11:58

本文主要是介绍Django扩建auth_user表——小白教小白傻瓜式教程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

我本来是做两张表想着关联一下,自带的auth_user就用来存用户登录信息,自建userinfo存其他信息的,但是,破灭了。

抹干眼泪做个坚强的男孩子。

下面,就扩展auth_user表,把所有需要的信息存进去就行了呗。

但是,怎么扩建呢?网上教程一大堆。

上来就是一顿操作,操作是猛如虎,但是,小白看的懵逼啊。

作为小白,我看那些博文的时候,主要有以下疑惑:

1,那么多种扩展方法,那种更适合小白上手

2,扩展了之后,是在原表上扩展的吗?

3,如果是,表还是叫auth_user吗?

4,如果不是,那么现在两张表?我该用自己扩展后新建的吗?

5,怎么用?

........

好,经过我阅文无数,加上实操。解答并逐步示范操作,让大家少走弯路,少查文档,节省时间。

1,使用 继承AbstractUser类 去扩展更方便简单

2,使用1操作后,属于原表扩展,因为原表也是继承该类

3,虽然是在原表扩展,但是表名变成了你自建的app加你创建的类名(如我的app是Myapp,类是UserInfo表名为myapp_userinfo),注意,不因为你的大小写而大小写,统一为小写。

4,继承该类扩展的表,只用一张,原auth_user不会被创建。

5,下面教你怎么用。

一,创建models,继承AbstractUser (注意,我这里有头像字段,需要pip install pillow,避免迁移报错)

from django.db import models
from django.contrib.auth.models import AbstractUser# Create your models here.
class UserInfo(AbstractUser):username = models.CharField(max_length=20,verbose_name='昵称',unique=True)phone = models.CharField(max_length=20,verbose_name='联系方式',default='')cate = models.CharField(max_length=10,verbose_name='用户类型')detail = models.CharField(max_length=1000,verbose_name='简介')address = models.CharField(max_length=500,verbose_name='地址')# upload_to指定了图片上传的位置# %Y%m%d是日期格式化的写法,会最终格式化为系统时间avater = models.ImageField(upload_to='avatar/%Y%m%d/',verbose_name='头像',blank=True)# pic = models.CharField(max_length=300,verbose_name='头像')class Meta:verbose_name = 'UserInfo'

二,settings.py里设置    你的app名.你的models类名

# 扩展默认数据库
AUTH_USER_MODEL = 'Myapp.UserInfo'

三,生成与执行迁移,得到如下表:

可以看到,被选择的哪行,就是我们新建的,原有的auth_user不会生成。

字段也扩展了,唯一的缺点是,密码明文了。(这个会导致使用authenticate验证时,登录失败)

四,在views.py使用,其实和普通建表使用的方法是一样的,举个栗子,用注册举吧。

# 导入模型
from .models import UserInfo
from django.shortcuts import render, redirect
from django.http import HttpResponseRedirect
from django.contrib.auth import authenticate,login,logout# 注册
def register(request):info = Noneif request.method == 'POST' and request.POST:data = request.POSTusername = data.get("username")password = data.get("password")# 校验注册,名字不可重复if username:u = UserInfo.objects.filter(username=username).first()if u:info = '该用户名已被注册'return render(request,'Myapp/register.html',{'info':info})else:if password:UserInfo.objects.create(username=username,password=password)# 重定向到登录页面return HttpResponseRedirect('/tologin/')info = '注册失败,用户名或密码不能为空'# info =# 注册失败,重新注册return render(request,'Myapp/register.html',{'info':info})

一步一步执行,看看注册后,数据库的效果。

首页:

注册:注册个熊二

注册完成跳登录:

登录后主页:

数据库信息:

另外,我已经完成了个人信息修改与头像上传。嘿嘿。

这篇关于Django扩建auth_user表——小白教小白傻瓜式教程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/790604

相关文章

Elasticsearch 在 Java 中的使用教程

《Elasticsearch在Java中的使用教程》Elasticsearch是一个分布式搜索和分析引擎,基于ApacheLucene构建,能够实现实时数据的存储、搜索、和分析,它广泛应用于全文... 目录1. Elasticsearch 简介2. 环境准备2.1 安装 Elasticsearch2.2 J

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则

MySQL Workbench 安装教程(保姆级)

《MySQLWorkbench安装教程(保姆级)》MySQLWorkbench是一款强大的数据库设计和管理工具,本文主要介绍了MySQLWorkbench安装教程,文中通过图文介绍的非常详细,对大... 目录前言:详细步骤:一、检查安装的数据库版本二、在官网下载对应的mysql Workbench版本,要是

通过Docker Compose部署MySQL的详细教程

《通过DockerCompose部署MySQL的详细教程》DockerCompose作为Docker官方的容器编排工具,为MySQL数据库部署带来了显著优势,下面小编就来为大家详细介绍一... 目录一、docker Compose 部署 mysql 的优势二、环境准备与基础配置2.1 项目目录结构2.2 基

Linux安装MySQL的教程

《Linux安装MySQL的教程》:本文主要介绍Linux安装MySQL的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux安装mysql1.Mysql官网2.我的存放路径3.解压mysql文件到当前目录4.重命名一下5.创建mysql用户组和用户并修

Django序列化中SerializerMethodField的使用详解

《Django序列化中SerializerMethodField的使用详解》:本文主要介绍Django序列化中SerializerMethodField的使用,具有很好的参考价值,希望对大家有所帮... 目录SerializerMethodField的基本概念使用SerializerMethodField的

最新Spring Security实战教程之Spring Security安全框架指南

《最新SpringSecurity实战教程之SpringSecurity安全框架指南》SpringSecurity是Spring生态系统中的核心组件,提供认证、授权和防护机制,以保护应用免受各种安... 目录前言什么是Spring Security?同类框架对比Spring Security典型应用场景传统