怎么使用Django自带的auth_user模型

18 篇文章 1 订阅
14 篇文章 1 订阅

前言


 大家在安装Django成功后,创建一个admin管理员就能管理我们的数据了,但是大家有没有想过我们创建管理员的信息被存储在那里了呢?


解答


 首先,虽然我们在项目开始时没有编写任何模型,但是我们也可以执行迁移文件的命令

python manage.py makemigrations
python manage.py migrate

然后我们会发现也会生成很多的表单,这是Django内置模型映射的表单
表单
 大家可以看到我用红框标出的表单,这个表单就是存储我们admin管理的信息了表单字段
当我们点进去时我们会发现它自定义了很多的字段,比如username、password、email等,这些字段我们平时做开发时是会常用的,如果我们能用这个表来存储我们注册用户的表会我们省去不少事情!那怎么使用auth_user这个自带的用户表呢?


步骤


  1. 首先我们还是要在model.py中定义一个用户表模型的,大家可以在模型类中添加需要的模型(像用户名、密码等字段就不用我们再定义了,因为auth_user已经定义了)
class User(AbstractUser):
    GENDER_CHOICES = (
        ('男', 'Male'),
        ('女', 'Female'),
    )
    gender = models.CharField(max_length=2, choices=GENDER_CHOICES, verbose_name='性别')
    mobile = models.CharField(unique=True, max_length=11, error_messages={'unique': '该手机号已被注册!'}, verbose_name='手机号码')
    cloud_icon = models.CharField(max_length=100, verbose_name='头像')

    class Meta:
        db_table = 'user'
        verbose_name = '用户表'
        verbose_name_plural = verbose_name
        ordering = ['id']
  1. 执行迁移文件命令
    python manage.py makemigrations
    python manage.py migrate
    执行结果:
    执行结果
    然后会发现报了一大堆错误。。。。。。
             哈哈哈
    不要慌!
               不要慌
    大家看我标出的红框可以知道大概意思是说user表添加或更改了一些字段!我们要知道在Django中一个表对应一张模型!如果我们执行成功的会那么数据库中就会生成我们模型类的表,可是我们是想使用auth_user表,那么我们必须在setting.py文件中指明我们要使用!

  2. 在setting.py文件中添加一句
    AUTH_USER_MODEL = 'myBlog.User'

    AUTH_USER_MODEL = ‘你的应用名.你定义的模型类名’

  3. 然后在执行迁移文件命令
    执行结果
    然后就会报错。。。。
                  在这里插入图片描述
    不要慌,我们可以看到红框中显示myBlog.0001_initial这个信息,再看我们的迁移文件中
         在这里插入图片描述
    两者结合应该能猜出是0001_initial.py这个文件重复了,我们把这个文件和刚刚生成的表单全部删了(反正刚刚建表没有数据)
    删除

  4. 最后在执行迁移命令,然后你就会发现。。。。。
                在这里插入图片描述

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django自带Authentication模块提供了一套完整的用户认证和授权系统,包括用户注册、登录、退出登录、重置密码等功能。下面是使用Django自带Authentication模块的步骤: 1. 在settings.py中配置AUTHENTICATION_BACKENDS和INSTALLED_APPS,确保Authentication模块被正确加载。 ```python AUTHENTICATION_BACKENDS = [ 'django.contrib.auth.backends.ModelBackend', ] INSTALLED_APPS = [ # ... 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', # ... ] ``` 2. 在urls.py中配置登录、退出登录、重置密码等视图函数的路由。 ```python from django.urls import path from django.contrib.auth import views as auth_views urlpatterns = [ # 登录 path('login/', auth_views.LoginView.as_view(), name='login'), # 退出登录 path('logout/', auth_views.LogoutView.as_view(), name='logout'), # 密码重置 path('password_reset/', auth_views.PasswordResetView.as_view(), name='password_reset'), # 密码重置确认 path('password_reset_confirm/<uidb64>/<token>/', auth_views.PasswordResetConfirmView.as_view(), name='password_reset_confirm'), # 密码重置完成 path('password_reset_done/', auth_views.PasswordResetDoneView.as_view(), name='password_reset_done'), # 密码重置发送邮件 path('password_reset_email/', auth_views.PasswordResetEmailView.as_view(), name='password_reset_email'), ] ``` 3. 在模板中使用Django自带的登录、退出登录、重置密码等表单。 ```html {% if not user.is_authenticated %} <form method="post" action="{% url 'login' %}"> {% csrf_token %} <label for="username">Username:</label> <input type="text" name="username"><br> <label for="password">Password:</label> <input type="password" name="password"><br> <input type="submit" value="Login"> </form> {% else %} <p>Welcome, {{ user.username }}!</p> <form method="post" action="{% url 'logout' %}"> {% csrf_token %} <input type="submit" value="Logout"> </form> {% endif %} ``` 4. 使用Django自带User模型进行用户管理。 ```python from django.contrib.auth.models import User # 创建用户 user = User.objects.create_user(username='testuser', password='testpass') # 设置用户属性 user.first_name = 'Test' user.last_name = 'User' user.email = 'testuser@example.com' user.is_staff = True user.is_superuser = True # 保存用户 user.save() # 验证用户 from django.contrib.auth import authenticate user = authenticate(username='testuser', password='testpass') if user is not None: # 登录成功 else: # 登录失败 ``` 以上就是使用Django自带Authentication模块的基本方法,具体使用时可以根据需求进行扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值