Django扩展User模块:创建Profile及登录重定向配置
本文介绍如何在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模块的完整方法,希望能对读者有所帮助,欢迎支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













