zoukankan      html  css  js  c++  java
  • 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>
    
    始于才华,忠于颜值;每件事情在成功之前,看起来都是天方夜谭。一无所有,就是无所不能。
  • 相关阅读:
    noi 2011 noi嘉年华 动态规划
    最小乘积生成树
    noi 2009 二叉查找树 动态规划
    noi 2010 超级钢琴 划分树
    noi 2011 阿狸的打字机 AC自动机
    noi 2009 变换序列 贪心
    poj 3659 Cell Phone Network 动态规划
    noi 2010 航空管制 贪心
    IDEA14下配置SVN
    在SpringMVC框架下建立Web项目时web.xml到底该写些什么呢?
  • 原文地址:https://www.cnblogs.com/guyan-2020/p/12348092.html
Copyright © 2011-2022 走看看