Django форма регистрации пользователя не отображается должным образом - PullRequest
0 голосов
/ 27 мая 2020

Я делаю проект Django, в котором есть два типа пользователей: клиенты и рестораны. Оба могут зарегистрироваться отдельно. Все работает нормально, за исключением того, что я не могу добавить класс CSS в поле пароля, а вокруг поля пароля отображается предупреждение, которое я не знаю, как они появляются.

Models.py

class User(AbstractUser):
is_customer = models.BooleanField(default=False)
is_restaurant = models.BooleanField(default=False)
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)


class Customer(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
food_pref = models.CharField(max_length=10, default='veg')


class Restaurant(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)

Forms.py, извините за вставку неверного кода. Просто для пояснения класс CustomerSignupform является родительским.

class CustomerSignUpForm(UserCreationForm):
     first_name = forms.CharField(required=True)
     last_name = forms.CharField(required=True)
     food_pref = forms.CharField(required=True)

class Meta(UserCreationForm.Meta):
    model = User

@transaction.atomic
def save(self):
    user = super().save(commit=False)
    user.is_customer = True
    user.first_name = self.cleaned_data.get('first_name')
    user.last_name = self.cleaned_data.get('last_name')
    user.food_pref = self.cleaned_data.get('food_pref')
    user.save()
    customer = Customer.objects.create(user=user)
    customer.food_pref = self.cleaned_data.get('food_pref')
    customer.save()
    return user

def __init__(self, *args, **kwargs):
    super(CustomerSignUpForm, self).__init__(*args, **kwargs)

    self.fields['username'].widget.attrs.update({
        'class': 'form-control',
        "name": "username"})
    self.fields['first_name'].widget.attrs.update({
        'class': 'form-control',
        "name": "username"})
    self.fields['last_name'].widget.attrs.update({
        'class': 'form-control',
        "name": "username"})
    self.fields['food_pref'].widget.attrs.update({
        'class': 'form-control',
        "name": "food_pref"})

Views.py

class customer_register(CreateView):
    model = User
    form_class = CustomerSignUpForm
    template_name = 'login/customer_register.html'

def form_valid(self, form):
    user = form.save()
    login(self.request, user)
    return redirect('/')

Register User View

У меня похожая проблема с регистрацией в ресторане. Спасибо

1 Ответ

1 голос
/ 27 мая 2020

Не могли бы вы попробовать это. Думаю, как-нибудь вам это поможет.

            self.fields['password1'].widget.attrs['class'] = 'form-group'
            self.fields['password2'].widget.attrs['class'] = 'form-group'

            self.fields['password1'].widget.attrs['placeholder'] = 'Password'
            self.fields['password2'].widget.attrs['placeholder'] = 'Confirm Passoword'

            self.fields['password1'].label = ''
            self.fields['password2'].label = ''

            self.fields['password1'].help_text = ''
            self.fields['password2'].help_text = ''
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...