06.Django中用户的两种扩展方式(Profile和AbstractUser)

本文详细介绍了如何在Django框架下建立子项目,并配置子项目模型,同时展示了如何继承抽象用户模型以实现自定义用户管理。通过实际操作演示,旨在帮助开发者更高效地进行项目管理和用户个性化设置。
1:profile扩展
正常建立一个项目:
 
python-admin.py startproject myweb
 
建立子项目
manage.py startapp user
 
子项目配置如下:
models.py
from django.db import models
from django.contrib.auth.models import User                    #导入admin的User
from django.db.models.signals import post_save

# Create your models here.

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    description = models.TextField(max_length=51200)
    scope = models.IntegerField(default=100)
admin.py
#coding:utf-8
from django.contrib import admin
from django.contrib.auth.models import User
from login.models import UserProfile

# Register your models here.
class ProfileInline(admin.StackedInline):  #将UserProfile加入到Admin的user表中
    model = UserProfile
    verbose_name = 'profile'

class UserProfileAdmin(admin.ModelAdmin):
    inlines = (ProfileInline,)

admin.site.unregister(User)  #去掉在admin中的注册
admin.site.register(User, UserProfileAdmin)  #用userProfileAdmin注册user
views.py
from django.shortcuts import render
from django.http import HttpResponse
from django.contrib.auth.models import User
from login.models import UserProfile
# Create your views here.

def userDemo(request):
    desc = User.objects.all()[0]
return HttpResponse(desc)
 
配置URL:
myweb目录下的url:
from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
url(r'^login/', include('login.urls'))
]
 
赋值一份urls.py 到user的目录下,修改urlpatterns 如下:
 
from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^login/$', 'login.views.userDemo')
]
 
数据库的同步:
makemigrations
migrate
syncdb
 
后台登陆查看
 
 
二:继承AbstractUser
 
 
新建一个项目如Profile所示
myweb修改添加如下语句:
AUTH_USER_MODEL = 'login.User'
login中:
models.py
from django.db import models
from django.contrib.auth.models import AbstractUser

# Create your models here.

class User(AbstractUser):     #继承AbstractUser
desc = models.TextField()
admin.py
#coding:utf-8
from django.contrib import admin

# Register your models here.
from login.models import User
admin.site.register(User)
其余的URL配置  ,views.py配置和settings.py的部分配置同profile的配置方式
 
数据库的同步:
makemigrations
migrate
syncdb
 
后台登陆即可

搜索与推荐Wiki

扫一扫 关注微信公众号!号主 专注于搜索和推荐系统,尝试使用算法去更好的服务于用户,包括但不局限于机器学习,深度学习,强化学习,自然语言理解,知识图谱,还不定时分享技术,资料,思考等文章!


                             【技术服务】,详情点击查看:https://mp.weixin.qq.com/s/PtX9ukKRBmazAWARprGIAg 


外包服务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值