AbstractUser和AbstractBaseUser在Django之间的区别?

本文探讨了Django中AbstractUser和AbstractBaseUser的区别。AbstractUser是预定义完整用户模型的抽象类,方便扩展,而AbstractBaseUser仅包含认证功能,需要自定义字段。若只需添加额外字段,推荐使用AbstractUser;如需重新设计认证逻辑,则应选择AbstractBaseUser。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.使用的AbstractUserAbstractBaseUser看起来颇为相似。

 

from django.contrib.auth.models import AbstractUser, AbstractBaseUser

从django.contrib.auth.models导入AbstractUser,AbstractBaseUser

2.What is the difference between the two?

The documentation explains this fully. AbstractUser is a full User model, complete with fields, as an abstract class so that you can inherit from it and add your own profile fields and methods. AbstractBaseUser only contains the authentication functionality, but no actual fields: you have to supply them when you subclass.

文档充分解释了这一点。 AbstractUser是一个完整的用户模型,包含字段,作为一个抽象类,以便您可以继承它并添加您自己的配置文件字段和方法。 AbstractBaseUser仅包含身份验证功能,但不包含实际字段:当您继承子类时,您必须提供它们。

The AbstractUser is basically just the "User" class you're probably already used to. AbstractBaseUser makes fewer assumptions and you have to tell it what field represents the username, what fields are required, and how to manage those users.

AbstractUser基本上就是您可能已经习惯的“用户”类。 AbstractBaseUser的继承较少,您必须告诉它哪个字段代表用户名,需要哪些字段以及如何管理这些用户。

If you're just adding things to the existing user (i.e. profile data with extra fields), then use AbstractUser because it's simpler and easier. If you want to rethink some of Django's assumptions about authentication, then AbstractBaseUser gives you the power to do so.

如果您只是将事情添加到现有用户(即具有额外字段的配置文件数据),则使用AbstractUser是因为它更简单,更简单。 如果您想重新考虑一下Django关于认证的假设,那么AbstractBaseUser会为您提供这样的权力。

 

在PyCharm中使用Django创建用户模型视图的基本步骤如下: 1. **安装并启动项目**: - 首先确保已经安装了DjangoPyCharm。打开PyCharm,选择"Start a new Project",然后选择"Django"。 2. **创建一个新的Django应用**: - 在项目的"settings.py"文件中添加新应用到`INSTALLED_APPS`列表,例如创建名为"users"的应用: ```python INSTALLED_APPS = [..., 'users', ...] ``` 然后,在命令行中运行`python manage.py startapp users` 3. **定义用户模型**: - 打开`users/models.py`,编辑或创建User模型。可以基于Django内置的AbstractBaseUserAbstractUserModel来自定义。例如: ```python from django.contrib.auth.models import AbstractUser class CustomUser(AbstractUser): # 可能需要添加额外字段,如username、email等 first_name = models.CharField(max_length=30) last_name = models.CharField(max_length=30) def __str__(self): return self.username ``` 然后在底部添加应用的迁移文件: ```python # 添加迁移文件 python manage.py makemigrations python manage.py migrate ``` 4. **更新数据库表结构**: 运行上述的makemigrationsmigrate命令,Django会根据你的模型生成相应的数据库表。 5. **定义视图URLs**: - 在`users/views.py`中创建处理用户请求的视图函数,比如注册、登录注销功能: ```python from django.shortcuts import render, redirect from .forms import CustomUserCreationForm def register(request): if request.method == 'POST': form = CustomUserCreationForm(request.POST) if form.is_valid(): form.save() return redirect('login') else: form = CustomUserCreationForm() return render(request, 'register.html', {'form': form}) ``` - 在`users`目录下创建`urls.py`,定义URL路径以及关联到视图: ```python from django.urls import path from . import views urlpatterns = [ path('register/', views.register, name='register'), ] ``` 然后将应用的urls添加到项目的主urls.py中: 6. **模板HTML**: - 创建`templates/users/register.html`文件,编写HTML表单,用于显示用户注册信息。 7. **配置认证系统**: 在项目的`settings.py`中配置登录成功后的默认页面其他认证设置。 完成以上步骤后,你就可以在PyCharm中测试用户模型视图了。记得检查浏览器的开发者工具查看是否有错误,并根据需要调整模板视图。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Christian_yang

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值