网络编程
位置:首页>> 网络编程>> Python编程>> Django使用Profile扩展User模块方式

Django使用Profile扩展User模块方式

作者:kongxx  发布时间:2023-06-16 12:26:12 

标签:Django,Profile,User

首先创建Profile应用

python manage.py startapp profiles

profiles/models.py


# -*- 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)

profiles/admin.py


# -*- 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)

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/的解决方案

Django使用Profile扩展User模块方式

在project的setting里加一句话就Okay!

LOGIN_REDIRECT_URL = '/index'

来源:https://blog.csdn.net/kongxx/article/details/50621745?

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com