Python Django re风格表格
我目前正在尝试“设计”我的表单。总的来说,我了解它背后的概念,但不是在那一点上: 这就是它的意图(并且不起作用): views.py:Python Django re风格表格,python,django,forms,Python,Django,Forms,我目前正在尝试“设计”我的表单。总的来说,我了解它背后的概念,但不是在那一点上: 这就是它的意图(并且不起作用): views.py: def signup (request): if request.method == 'POST': form = RegistrationForm(request.POST) if form.is_valid(): form.save() messages.add_mess
def signup (request):
if request.method == 'POST':
form = RegistrationForm(request.POST)
if form.is_valid():
form.save()
messages.add_message(request, messages.INFO, "Thanks for you registration, you are now able to login.")
return redirect(reverse('post_list'))
else:
form = RegistrationForm()
args = {'form': form}
return render(request, 'registration/signup.html', args)
我得到的错误是:
AttributeError:管理器不可用;'身份验证用户“”已被交换
对于“accounts.User”
在my settings.py中,我设置:
AUTH_USER_MODEL='accounts.USER'
这是当前的工作状态:
class RegistrationForm(UserCreationForm):
user = forms.CharField(required=True)
class Meta:
model = User
fields = (
'user',
'password1',
'password2',
'pubpgp'
)
captcha = CaptchaField()
def save(self, commit=True):
user = super(RegistrationForm, self).save(commit=False)
user.pubpgp = self.cleaned_data['pubpgp']
if commit:
user.save()
return user
帐户的用户模型:
#User Model Manager
class UserManager(BaseUserManager):
def create_user(self, user, password=None):
"""
Creates and saves a User with the given username and password.
"""
if not user:
raise ValueError('Error: The User you want to create must have a username, try again')
new_user = self.model(
user=self.model.normalize_username(user)
)
new_user.set_password(password)
new_user.save(using=self._db)
return new_user
def create_staffuser(self, user, password):
"""
Creates and saves a staff user with the given username and password.
"""
new_user = self.create_user(
user,
password=password,
)
new_user.staff = True
new_user.save(using=self._db)
return new_user
def create_superuser(self, user, password):
"""
Creates and saves a superuser with the given username and password.
"""
new_user = self.create_user(
user,
password=password,
)
new_user.staff = True
new_user.admin = True
new_user.save(using=self._db)
return new_user
class User(AbstractBaseUser):
#User fields
user = models.CharField(verbose_name='username',max_length=30,unique=True)
bio = models.TextField(max_length=5000, blank=True, null=True)
pubpgp = models.TextField(blank=True, null=True)
avatar = fields.ImageField(upload_to='avatar', blank=True, null=True, dependencies=[
FileDependency(processor=ImageProcessor(
format='JPEG', scale={'max_width': 350, 'max_height': 350}))
])
#Account typs
active = models.BooleanField(default=True)
staff = models.BooleanField(default=False) # a admin user; non super-user
admin = models.BooleanField(default=False) # a superuser
# notice the absence of a "Password field", that's built in.
USERNAME_FIELD = 'user'
REQUIRED_FIELDS = [] # Username & Password are required by default.
def get_full_name(self):
# The user is identified by their Username ;)
return self.user
def get_short_name(self):
# The user is identified by their Username address
return self.user
def __str__(self):
return self.user
def has_perm(self, perm, obj=None):
"""Does the user have a specific permission?"""
# Simplest possible answer: Yes, always
return True
def has_module_perms(self, app_label):
"""Does the user have permissions to view the app `app_label`?"""
# Simplest possible answer: Yes, always
return True
@property
def is_staff(self):
"""Is the user a member of staff?"""
return self.staff
@property
def is_admin(self):
"""Is the user a admin member?"""
return self.admin
@property
def is_active(self):
"""Is the user active?"""
return self.active
objects = UserManager()
我想我必须以某种方式将用户模型传递到这个表单中。你知道语法吗?我认为你的
帐户有问题。User
,你能分享你创建的自定义用户模型的(相关部分)吗?你在那个元类中引用的用户是什么?是auth.User还是accounts.User?accounts.User是我自己的用户模型。我猜“model=User”只是缺少了,但不知道该由谁来实现。感谢adavanceDid为您的自定义用户模型创建用户管理器?检查是的,我做了,工作正常。
#User Model Manager
class UserManager(BaseUserManager):
def create_user(self, user, password=None):
"""
Creates and saves a User with the given username and password.
"""
if not user:
raise ValueError('Error: The User you want to create must have a username, try again')
new_user = self.model(
user=self.model.normalize_username(user)
)
new_user.set_password(password)
new_user.save(using=self._db)
return new_user
def create_staffuser(self, user, password):
"""
Creates and saves a staff user with the given username and password.
"""
new_user = self.create_user(
user,
password=password,
)
new_user.staff = True
new_user.save(using=self._db)
return new_user
def create_superuser(self, user, password):
"""
Creates and saves a superuser with the given username and password.
"""
new_user = self.create_user(
user,
password=password,
)
new_user.staff = True
new_user.admin = True
new_user.save(using=self._db)
return new_user
class User(AbstractBaseUser):
#User fields
user = models.CharField(verbose_name='username',max_length=30,unique=True)
bio = models.TextField(max_length=5000, blank=True, null=True)
pubpgp = models.TextField(blank=True, null=True)
avatar = fields.ImageField(upload_to='avatar', blank=True, null=True, dependencies=[
FileDependency(processor=ImageProcessor(
format='JPEG', scale={'max_width': 350, 'max_height': 350}))
])
#Account typs
active = models.BooleanField(default=True)
staff = models.BooleanField(default=False) # a admin user; non super-user
admin = models.BooleanField(default=False) # a superuser
# notice the absence of a "Password field", that's built in.
USERNAME_FIELD = 'user'
REQUIRED_FIELDS = [] # Username & Password are required by default.
def get_full_name(self):
# The user is identified by their Username ;)
return self.user
def get_short_name(self):
# The user is identified by their Username address
return self.user
def __str__(self):
return self.user
def has_perm(self, perm, obj=None):
"""Does the user have a specific permission?"""
# Simplest possible answer: Yes, always
return True
def has_module_perms(self, app_label):
"""Does the user have permissions to view the app `app_label`?"""
# Simplest possible answer: Yes, always
return True
@property
def is_staff(self):
"""Is the user a member of staff?"""
return self.staff
@property
def is_admin(self):
"""Is the user a admin member?"""
return self.admin
@property
def is_active(self):
"""Is the user active?"""
return self.active
objects = UserManager()