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

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

本文介绍如何在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 相关产品和应用

全部下载

专题列表