Django扩展User模块:创建Profile及登录重定向配置

栗子
栗子
发布时间:2026-10-13| 3人浏览过
原创

本文介绍如何在Django中通过创建Profile应用来扩展User模块,包括定义UserProfile模型、配置Admin后台以及设置AUTH_PROFILE_MODULE。同时提供解决登录跳转至accounts/profile/的问题,通过配置LOGIN_REDIRECT_URL指定自定义首页路径,确保用户登录后正确跳转。

创建Profile应用

首先,需要创建一个新的应用来专门处理用户资料扩展。

执行命令:python manage.py startapp profiles

定义UserProfile模型

接下来,在profiles应用的models.py文件中定义UserProfile模型。


# -*- coding: utf-8 -*-
from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save

class UserProfile(models.Model):
  user = models.OneToOneField(User)
  nickname = models.CharField(max_length=16, default='', blank=True)
  sex = models.IntegerField(default=0)
  phone = models.CharField(max_length=16, default='', blank=True)

  def __str__(self):
    return self.nickname

  def __unicode__(self):
    return self.nickname

def create_user_profile(sender, instance, created, **kwargs):
  if created:
    profile = UserProfile()
    profile.user = instance
    profile.save()

post_save.connect(create_user_profile, sender=User)

配置Admin后台

然后,在profiles应用的admin.py文件中配置Admin后台以显示UserProfile信息。


# -*- coding: utf-8 -*-
from django.contrib import admin
from django.contrib.auth.models import User
from django.contrib.auth.admin import UserAdmin
from .models import UserProfile

class ProfileInline(admin.StackedInline):
  model = UserProfile
  max_num = 1
  can_delete = False

class UserProfileAdmin(UserAdmin):
  inlines = [ProfileInline, ]

admin.site.unregister(User)
admin.site.register(User, UserProfileAdmin)

设置AUTH_PROFILE_MODULE

在项目的settings.py文件中进行相关配置。

添加以下配置项:

AUTH_PROFILE_MODULE = 'profiles.UserProfile'

数据库同步与测试

完成上述配置后,进行数据库同步和测试。


$ python manage.py syncdb
$ python manage.py shell
>>> from django.contrib.auth.models import User
>>> user = User()
>>> user.username='testuser'
>>> user.save()
>>> User.objects.all()[0].userprofile

解决登录重定向问题

补充知识:Django中登录默认跳转到accounts/profile/的解决方案。

只需在项目的setting.py文件中添加一行配置即可解决。

LOGIN_REDIRECT_URL = '/index'

以上即为Django使用Profile扩展User模块的完整方法,希望能对读者有所帮助,欢迎支持本站。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。