是django1.5的新特性,按照教程一步一步的操作感觉应该是无异的。折腾了半天不知道哪里问题。求大侠指点。
https://docs.djangoproject.com/en/1.5/topics/auth/customizing/#auth-custom-user
已经按照教程做了这些工作:
1、新建了一个accounts的app,跟自定义用户相关(注册、登录等)的model 和 veiw 都写在里面
2、将accounts这个app已经添加到了settings.py的INSTALLED_APPS列表
3、在settings.py添加了AUTH_USER_MODEL = 'accounts.Passport'
下面是是accounts/的 models.py源码
# coding: utf8 from django.db import models from django.contrib.auth.models import BaseUserManager, AbstractBaseUser, PermissionsMixin # Create your models here. class Passport(AbstractBaseUser, PermissionsMixin): username = models.CharField(max_length=40, unique=True, db_index=True) email = models.EmailField(max_length=254, unique=True) avatar = models.ImageField(upload_to='avatar') nickname = models.CharField(max_length=60) is_staff = models.BooleanField('staff status', default=False) is_active = models.BooleanField('active', default=True) bio = models.CharField(max_length=255) GENRE_CHOICES = ( (1, '摄影师'), (2, '插画师'), (3, '原画师'), (4, '平面设计师'), (5, '品牌顾问'), (6, '其他'), ) genre = models.SmallIntegerField(choices=GENRE_CHOICES) site_dribbble = models.URLField(blank=True, verbose_name=u'Dribbble') site_deviantart = models.URLField(blank=True, verbose_name=u'DeviantART') site_benhance = models.URLField(blank=True, verbose_name=u'Benhance') site_tumblr = models.URLField(blank=True, verbose_name=u'Tumblr') site_zcool = models.URLField(blank=True, verbose_name=u'站酷') site_blog = models.URLField(blank=True, verbose_name=u'博客') site_sina = models.URLField(blank=True, verbose_name=u'新浪微博' ''' 【提示就这里语法错误!!!】 ''' ''' 用于登录的字段 ''' USERNAME_FIELD = 'username' ''' REQUIRED_FIELDS must contain all required fields on your User model, but should not contain the USERNAME_FIELD or password as these fields will always be prompted for. ''' REQUIRED_FIELD = ['email'] objects = PassportManager() def get_full_name(self): return self.nickname def get_short_name(self): return self.nickname def __unicode__(self): return self.username class PassportManager(BaseUserManager): def create_user(self, username, email, password=None): ''' create_user()参数必须是USERNAME_FIELD 和 所有的REQUIRED_FIELD ''' if not email: raise ValueError('用户必须输入Email地址') user = self.model( username = username, email = PassportManager.normalize_email(email), is_staff = False, is_active = True, is_superuser = False ) user.set_password(password) user.save(using = self._db) return user def create_superuser(self, username, email, password): user = self.create_user( username = username, email = email, password = password ) user.is_staff = True user.is_active = True user.is_superuser = True user.save(using = self._db) return user
秒看到
site_sina = models.URLField(blank=True, verbose_name=u'新浪微博' ''' 【提示就这里语法错误!!!】 '''
少个括号....
site_sina = models.URLField(blank=True, verbose_name=u'新浪微博'
前面这行的括号没有闭合。。。