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>
    
    始于才华,忠于颜值;每件事情在成功之前,看起来都是天方夜谭。一无所有,就是无所不能。
  • 相关阅读:
    POJ 1981 最大点覆盖问题(极角排序)
    POJ 1286 Pólya定理
    POJ 1830 高斯消元
    HDU 3364 高斯消元
    Educational Codeforces Round 42D. Merge Equals(STL)
    ZOJ 3955:Saddle Point(思维)
    POJ 3301:Texas Trip(计算几何+三分)
    SCUT 125 :笔芯回文(DP)
    ZOJ 3953:Intervals(优先队列+思维)
    Codeforces Gym101097I:Sticks (思维)
  • 原文地址:https://www.cnblogs.com/guyan-2020/p/12348092.html
Copyright © 2011-2022 走看看