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

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

LOGIN_REDIRECT_URL = '/index'

以上这篇Django使用Profile扩展User模块方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 详解Django中Request对象的相关用法

    从Request对象中获取数据 我们在第三章讲述View的函数时已经介绍过HttpRequest对象了,但当时并没有讲太多. 让我们回忆下:每个view函数的第一个参数是一个HttpRequest对象,就像下面这个hello()函数: from django.http import HttpResponse def hello(request): return HttpResponse("Hello world") HttpRequest对象,比如上面代码里的request变量,会有一

  • Django之全局使用request.user.username的实例详解

    我就废话不多说了,大家还是直接看代码吧! def pro_mgr(): """ 获取当前登陆用户的项目 :return: """ if DEVELOP_USER_NAME == 'admin': return Project.objects.all() return Project.objects.filter(prj_mgr=DEVELOP_USER_NAME) class DeployApplyForm(ModelForm): # proje

  • Django权限设置及验证方式

    当创建一个Models, 在同步到数据库里,django默认设置了三个权限 ,就是 add, change, delete权限.但是往往有时候,根本不够用,此时我们可以自己写一个脚本,来进行权限的设置. 根据DJango官方文档解释,权限都是与models有关系的,此时.如果想设置一个view,对于有权限的用户进行放行,对于无权限的用户进行限制.那么我们就可以着手来写这个需求. 验证权限的方法一般有两种,一种是用@permission_required来进行验证,第二中是用user.has_pe

  • django自带的权限管理Permission用法说明

    前言 一些公司内部的CMS系统存在某些内容让指定的用户有权限访问,这时候可以用django自带的权限管理进行限制,比较方便. 缺点:django自带的权限是针对model(模型)的,不能针对单条数据,要针对单条数据需要额外的操作. 默认的权限(add, change, delete, view) django针对每个模型,生成了四个默认的权限(add, change, delete, view).例如,我有一个model叫Log,那么这四个默认权限在数据库的存储格式为: 表auth_permis

  • 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

  • django manage.py扩展自定义命令方法

    # django manage.py扩展自定义命令 环境: mac django1.10.3 在实际的项目开发过程中,我们可能要执行某脚本初始化数据库,可能要启动多个服务,比如启动celery,redis等.要是直接执行python mange.py celery/redis那该多方便啊!,能把这些命令整合到django框架的manage.py中吗? 示例-初始化数据 通过执行python manage.py initdata命令初始化数据,执行此命令后,调用某数据初始化脚本文件,进行数据初始化

  • 对Django url的几种使用方式详解

    利用Django开发网站,可以设计出非常优美的url规则,如果url的匹配规则(包含正则表达式)组织得比较好,view的结构就会比较清晰,比较容易维护. 最简单的形式 <code> from django.conf.urls import patterns, url urlpatterns = patterns('', url(r'^articles/2003/$', 'news.views.special_case_2003'), url(r'^articles/(\d{4})/$', 'n

  • 在WIN98下以apache模块方式安装php

    在WIN98下以apache模块方式安装php手记 foolboy@chinaren.com ★相关软件:     mod_php4-4.0.1-pl2.zip     php-4.0.1pl2-Win32.zip     以上软件可以在www.php.net或者www.phpuser.com上下载     注意两者的版本一定要一样,     (关键是mod_php4.dll与php4ts.dll及Msvcrt.dll版本相同) ★具体步骤:     用winzip分别将两个.zip文件解压  

  • nuxt踩坑之Vuex状态树的模块方式使用详解

    初次看到这个模块方式,感觉很是新奇,之前的vuex状态树使用方法用的也有些腻了,就想来实践一发新的东西 废话不多说,直接进入正题 Vuex状态树-模块方式官方文档解读 状态树还可以拆分成为模块,store 目录下的每个 .js 文件会被转换成为状态树指定命名的子模块 这句话啊,看了半天,我都没绕出来.之前一直用的是store目录下文件为:index.js.state.js.mutations.js.actions.js.后三个是index.js的子模块,你说这每个js文件都是一个模块?懵逼一分钟

  • django xadmin 管理器常用显示设置方式

    课程管理器: class CourseAdmin(object): # 设置列表显示字段 list_display = ['name', 'course_org', 'detail','degree','learn_times','students','fav_nums','image','click_nums','add_time'] # 设置列表查询字段 search_field = ['name', 'course_org', 'detail','degree','learn_times'

  • django 多数据库及分库实现方式

    定义及路由机制 定义 在settings里面的DATABASES是一个字典,用于定义需要的数据库,如下,一共定义了两个数据库. DATABASES = { 'default': { 'NAME': 'app_data', 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'USER': 'postgres_user', 'PASSWORD': 's3krit' }, 'user1': { 'NAME': 'user1_data', 'ENGI

  • 详解Maven profile配置管理及激活profile的几种方式

    为了实现不同环境构建的不同需求,这里使用到了 profile.因为 profile 能够在构建时修改 pom 的一个子集,或者添加额外的配置元素.接下来介绍 Maven 中对 profile 的配置和激活. 针对不同环境的 profile 的配置 为了体现不同环境的不同构建,需要配置好不同环境的 profile,代码如下: <profiles> <profile> <id>dev_evn</id> <properties> <db.driv

  • Django展示可视化图表的多种方式

    1. 前言 大家好,我是安果! 使用 Django 进行 Web 开发时,经常有需要展示图表的需求,以此来丰富网页的数据展示 常见方案包含:Highcharts.Matplotlib.Echarts.Pyecharts,其中后 2 种方案使用频率更高 本篇文章将聊聊 Django 结合 Echarts.Pyecharts 实现图表可视化的具体流程 2. Echarts Echarts 是百度开源的一个非常优秀的可视化框架,它可以展示非常复杂的图表类型 以展示简单的柱状图为例,讲讲 Django

  • SpringBoot 多Profile使用与切换方式

    Spring中Profile对不同环境提供不同配置功能的支持,可以通过激活.指定参数等方式快速切换环境. 文件名格式:application-{profile}.properties 可以建立多个properties(yaml)文件来不断的切换 application-dev.properties server.port=8082 application-prod.properties server.port=8083 application.properties server.port=808

随机推荐