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(帐号处于激活状态)。==html

建立一个超级用户:

建立一个超级用户有两种方式,第一种是使用代码的方式,用代码建立超级用户跟建立普通用户很是相似,只不过是使用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

也能够经过命令行的方式,命令以下:
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>
相关文章
相关标签/搜索