161.内置User模型的基本使用
User模型
user模型是这个框架的核心部分,他的完整路径是在django.contrib.auth.models.User。对User对象做一个简单的了解。
字段:
内置的User模型有以下字段:
(1)username:用户名,150字符以内,可以包含数字和英文字符,以及_ 、@、+、.和-字符。不能为空,并且必须唯一,所以django在判定是否是正确的用户时,可以通过这个唯一性字段进行判断。
(2)first_name:孤烟逐云的first_name,在150字符之内,可以为空。
(3)last_name:孤烟逐云的last_name,在150字符以内,可以为空。
(4)email:邮箱,可以为空。
(5)password:密码。经过哈希函数的处理之后的密码。不可逆,具有一定的安全性。
(6)groups:分组,一个用户可以拥有多个分组,一个分组也可以拥有多个用户,groups这个字段是跟Group的一个多对多的关系。
(7)user_permissions:权限。一个用户可以拥有多个权限,一个权限可以被多个用户所拥有,和Permission属于一种多对多的关系。
(8)is_staff:是否是员工,是否可以进入admin的站点,默认情况下为否。
(9)is_active: 这个用户账号是否可用,对于一些想要删除账号的数据,我们设置为这个值为False,而不是在数据库中进行真正的删除。
(10)is_superuser:是否是超级管理员。如果是超级管理员,那么拥有整个网站的所有权限。
(11)last_login:上次登录的时间。
(12)date_joined:账号创建的时间。
User模型的基本使用
创建用户
通过create_user()方法可以快速的创建用户,这个方法至少要传递username, email,password,示例代码如下:
from django.shortcuts import render
from django.contrib.auth.models import User
def index(request):
<!--使用User模型上的create_user()方法创建对象-->
<!--需要注意的是,在使用这个方法,创建对象的时候至少要传递三个字段username,email,password的值-->
User.objects.create_user(username='孤烟逐云', email='333333@qq.com', password='.comhello')
return render(request, 'index.html')
需要注意的是,在使用Django内置的User模型之前,一定要将模型生成的脚本文件映射到数据库中,即在终端命令行中进入我们的项目所在的环境,执行python manage.py migrate,这样就可以将我们的脚本文件映射到数据库中了,就会在数据库中生成我们的user表,之后就可以使用django内置的user模型向数据库中添加用户了。在我们的urls.py中进行一层视图函数和url之间的映射,示例代码如下:
(1)子url与视图函数之间的映射:
front urls.py
from django.urls import path
from . import views
app_name = 'front'
urlpatterns = [
path('', views.index, name='index'),
]
(2)父url与子url之间的映射
from django.urls import path,include
urlpatterns = [
path('', include("front.urls")),
]
这样就可以运行我们的项目了,成功运行之后,查看我们的数据库表auth_user中是否含有我们刚才创建的用户,password字段是经过加密存储的,并且在没有设置is_superuser的情况下,默认为0,即使用create_user()方法创建的用户并不是超级用户,只是一个普通的用户。并且is_staff字段为0(非员工,不能登录admin管理系统),is_actve为1(账号处于激活状态)。
创建一个超级用户:
创建一个超级用户有两种方式,第一种是使用代码的方式,用代码创建超级用户跟创建普通用户非常类似,只不过是使用create_superuser, 示例代码如下:
def index(request):
User.objects.create_superuser(username='云中云', email='111111@qq.com', password='111111')
return render(request, 'index.html')
查看数据库中该用户的各字段的值,is_superuser为1,为超级管理员;is_staff为1,为员工,可以登录admin管理系统;is_active为1,该账号处于可用状态。
也可以通过命令行的方式,命令如下:
python manage.py createsuperuser
之后就会提示你输入用户名,邮箱和密码。
修改密码:
因为密码是通过加密之后才能存储进去的,所以如果想要使用修改密码,不能直接修改需要调用set_password来达到修改密码的目的,示例代码如下:
def index(request):
user = User.objects.get(pk=1)
if user:
user.set_password('111111')
user.save()
return HttpResponse('success!')
else:
return render(request, 'index.html')
登录验证
Django的验证系统已经帮我们实现了登录验证的功能,通过django.contrib.auth.authenticate可以实现,这个方法只能通过username和password来验证。示例代码如下:
# 3.登录验证
def index(request):
username = '孤烟逐云'
password = '111111'
user = authenticate(request, username=username, password=password)
# 这个方法如果验证用户存在,就会返回一个user对象,如果没有验证成功,就会返回None
if user:
contenxt = {
'username': user.username,
}
return render(request, 'index.html', context=contenxt)
else:
contenxt = {
'username': '该用户不存在!',
}
return render(request, 'index.html', context=contenxt)
在index.html中接收view中传来的上下文。
<ul>
<li>{{ username }}</li>
</ul>
161.内置User模型的基本使用的更多相关文章
- xadmin 配置内置User模型
xadmin 配置内置USER模型 默认展示 在你的User模型对应的app下创建adminx 文件 import xadmin from django.contrib.auth import get ...
- Django(60)Django内置User模型源码分析及自定义User
前言 Django为我们提供了内置的User模型,不需要我们再额外定义用户模型,建立用户体系了.它的完整的路径是在django.contrib.auth.models.User. User模型源码分析 ...
- JavaScript的事件、DOM模型、事件流模型以及内置对象详解(三)
JS中的事件 JS中的事件分类 1.鼠标事件: click/dbclick/mouseover/mouseout 2.HTML事件: onload/onunload/onsubmit/onresize ...
- cakePHP模型内置回调函数afterFind()的使用。
在用find获取数据后,我们要对所获取到的数据做一些处理,这时,直接在模型层覆盖cakephp内置的回调函数,使用find时会自动调用. 其中$baomings 就是find 到的 $this-> ...
- 11 The Go Memory Model go语言内置模型
The Go Memory Model go语言内置模型 Version of May 31, 2014 Introduction 介绍 Advice 建议 Happens Before 在发生之前 ...
- UVM RAL模型和内置seq
转载:UVM RAL模型:用法和应用_寄存器 (sohu.com) 在系统设计中通常会面临两大挑战:缩小技术节点的规模和上市时间(TTM,Time to Market).为了适应激烈的市场竞争,大多数 ...
- Entity Framework 6 Recipes 2nd Edition(11-12)译 -> 定义内置函数
11-12. 定义内置函数 问题 想要定义一个在eSQL 和LINQ 查询里使用的内置函数. 解决方案 我们要在数据库中使用IsNull 函数,但是EF没有为eSQL 或LINQ发布这个函数. 假设我 ...
- Oracle学习笔记十四 内置程序包
扩展数据库的功能 为 PL/SQL 提供对 SQL 功能的访问 用户 SYS 拥有所有程序包 是公有同义词 可以由任何用户访问 一些内置程序包 程序包名称 说明 STANDARD和DBMS_STAND ...
- XAF应用开发教程-内置Attribute功能列表
在 XAF 框架,一些用来生成一个业务应用程序的信息是在Attribute中指定.您可以将属性应用到业务类 (或它的成员) 指定验证规则,指定如何对数据进行显示. 设置关系类等.本主题提供了有关在何处 ...
随机推荐
- linux下(centos7)docker安装
参考链接https://docs.docker.com/install/linux/docker-ce/centos/ 第一步,确定是centos7及以上版本 cat /etc/redhat-rele ...
- IDEA创建mybatisDemo,并实现简单的CRUD
Mybatis 是支持普通SQL查询,存储过程和高级映射的优秀持久层框架.在Java或者Java Web项目中,添加Mybatis必须的核心包,就能对数据表进行增删改查操作了.下面以MySQL数据库o ...
- 多柱汉诺塔问题“通解”——c++
多柱汉诺塔问题 绪言 有位同学看到了我的初赛模拟卷上有一道关于汉诺塔的数学题.大概就是要求4柱20盘的最小移动次数. 他的数学很不错,找到了应该怎样推. 如果要把n个盘子移到另一个柱子上,步骤如下: ...
- Dijkstra算法(Matlab实现)
a = [,,,,,,]; % 起点节点 b = [,,,,,,]; % 终点节点 c = [,,,,,,]; % 对应权值 g = digraph(a,b,c); % 创建图 [path,dista ...
- bzoj3162独钓寒江雪
题意 \(n\)阶树,求本质不同的独立集个数 做法 重新编号后重心是不变的,如果有两个重心,可以加个虚点 用树哈希判子树有多少个相同的子树,设某种有\(k\)个,如果原本方案数为\(x\)个 则方案数 ...
- css基础-盒子模型+背景和列表
border-style的值: none 无 dotted 点状 dashed 虚线 solid 实线 double 双实线 margin: 垂直方向两个相邻元素都设置了外边距,那么外边距会发生合并 ...
- Windows显示默认桌面图标(计算机,用户的文件,网络,控制面板,回收站)
1.按Win+R 2.复制以下命令 rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0 3.点击运行,根据需求勾选相应图标即可
- 基于Docker的Consul集群实现服务发现
服务发现 其实简单说,服务发现就是解耦服务与IP地址之间的硬绑定关系,以典型的集群为例,对于集群来说,是有多个节点的,这些节点对应多个IP(或者同一个IP的不同端口号),集群中不同节点责任是不一样的. ...
- P1980 计数问题(int,string,stringstream)
题目描述 试计算在区间 1 到 n 的所有整数中,数字x(0 ≤ x ≤ 9)共出现了多少次?例如,在 1 到 11 中,即在 1,2,3,4,5,6,7,8,9,10,11 中,数字 1 出现了 4 ...
- sqlserver数据库重启
停止:net stop mssqlserver 重启:net start mssqlserver