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

相关文章

墨刀原型工具-小白入门篇

墨刀原型工具-小白入门篇 简介 随着互联网的发展和用户体验的重要性越来越受到重视,原型设计逐渐成为了产品设计中的重要环节。墨刀作为一款原型设计工具,以其简洁、易用的特点,受到了很多设计师的喜爱。本文将介绍墨刀原型工具的基本使用方法,以帮助小白快速上手。 第一章:认识墨刀原型工具 1.1 什么是墨刀原型工具 墨刀是一款基于Web的原型设计工具,可以帮助设计师快速创建交互原型,并且可以与团队

Steam邮件推送内容有哪些?配置教程详解!

Steam邮件推送功能是否安全?如何个性化邮件推送内容? Steam作为全球最大的数字游戏分发平台之一,不仅提供了海量的游戏资源,还通过邮件推送为用户提供最新的游戏信息、促销活动和个性化推荐。AokSend将详细介绍Steam邮件推送的主要内容。 Steam邮件推送:促销优惠 每当平台举办大型促销活动,如夏季促销、冬季促销、黑色星期五等,用户都会收到邮件通知。这些邮件详细列出了打折游戏、

X-AnyLabeling使用教程

1.AI 模型自动分割标注使用教程 2.AI 模型自动目标检测标注使用教程

青龙面板2.9之Cdle傻妞机器人编译教程

看到有的朋友对傻妞机器人感兴趣,这里写一下傻妞机器人的编译教程。 第一步,这里以linux amd64为例,去官网下载安装go语言安装包: 第二步,输入下方指令 cd /usr/local && wget https://golang.google.cn/dl/go1.16.7.linux-amd64.tar.gz -O go1.16.7.linux-amd64.tar.gz

青龙面板部署通用教程,含服务器、路由器、X86等部署方法

1. 拉取镜像/更新镜像 docker pull whyour/qinglong:latest 2. 删除镜像 docker rmi whyour/qinglong:latest 3. 启动容器 普通服务器 docker run -dit \-v $PWD/ql/config:/ql/config \-v $PWD/ql/log:/ql/log \-v $PWD/ql/db:

宝塔面板部署青龙面板教程【简单易上手】

首先,你得有一台部署了宝塔面板的服务器(自己用本地电脑也可以)。 宝塔面板部署自行百度一下,很简单,这里就不走流程了,官网版本就可以,无需开心版。 首先,打开宝塔面板的软件商店,找到下图这个软件(Docker管理器)安装,青龙面板还是安装在docker里,这里依赖宝塔面板安装和管理docker。 安装完成后,进入SSH终端管理,输入代码安装青龙面板。ssh可以直接宝塔里操作,也可以安装ssh连接

PS系统教程25

介绍软件 BR(bridge) PS 配套软件,方便素材整理、管理素材 作用:起到桥梁作用 注意:PS和BR尽量保持版本一致 下载和安装可通过CSDN社区搜索,有免费安装指导。 安装之后,我们打开照片只需双击照片,就自动在Ps软件中打开。 前提:电脑上有PS软件 三种预览格式 全屏预览 评星级 直接按数字键就可以 方向键可以更换图片 esc退出 幻灯片放

BD错误集锦9——查询hive表格时出错:Wrong FS: hdfs://s233/user/../warehouse expected: hdfs://mycluster

集群环境描述:HDFS集群处于HA模式下,同时启动了YARN\JN\KAFKA\ZK。 现象: FAILED: SemanticException Unable to determine if hdfs://s233/user/hive/warehouse/mydb.db/ext_calllogs_in_hbase is encrypted: java.lang.IllegalArgument

flex布局学习笔记(flex布局教程)

前端笔试⾯试经常会问到:不定宽⾼如何⽔平垂直居中。最简单的实现⽅法就是flex布局,⽗元素加上如下代码即 可: display: flex; justify-content: center; align-items :center; 。下⾯详细介绍下flex布局吧。   2009年,W3C提出了 Flex布局,可以简便⼂完整⼂响应式地实现各种页⾯布局。⽬前已得到了所有浏览器的⽀持,这意味着,现

IPython小白教程:提升你的Python交互式编程技巧,通俗易懂!

IPython是一个增强的Python交互式shell,它提供了丰富的功能和便捷的交互方式,使得Python开发和数据分析工作更加高效。本文将详细介绍IPython的基本概念、使用方法、主要作用以及注意事项。 一、IPython简介 1. IPython的起源 IPython由Fernando Pérez于2001年创建,旨在提供一个更高效的Python交互式编程环境。 2. IPyt