Джанго в стиле re-style - PullRequest
       1

Джанго в стиле re-style

0 голосов
/ 09 сентября 2018

В настоящее время я пытаюсь "оформить" мою форму. в общем, я понимаю концепцию этого, но не в тот момент:

Вот как это будет (и не работает):

class RegistrationForm(UserCreationForm):
    username = forms.CharField(required=True, label='Username', widget=forms.TextInput(attrs={'class': 'class-one-input-fields'}))
    password1 = forms.CharField(required=True, label='Password', widget=forms.PasswordInput(attrs={'class': 'class-one-input-fields'}))
    password2 = forms.CharField(required=True, label='Password confirmation', widget=forms.PasswordInput(attrs={'class': 'class-one-input-fields'}))
    pubpgp = forms.CharField(required=True, label='Public PGP Key', widget=forms.Textarea(attrs={'class': 'class-two-input-fields'}))
    captcha = CaptchaField()

    def save(self, commit=True):
        username = super(RegistrationForm, self).save(commit=False)
        username.pubpgp = self.cleaned_data['pubpgp']

        if commit:
            username.save()

        return username

views.py:

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: Менеджер недоступен; 'auth.User' был заменен для "account.User"

в моих 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 в эту форму. Есть идеи о синтаксисе?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...