Ошибка типа в / users / sigup create_user () принимает от 2 до 4 позиционных аргументов, но было дано 5 - PullRequest
1 голос
/ 25 января 2020

В моих моделях есть имя пользователя, дата рождения, язык, валюта и т. Д. c ...

Мне нужно, чтобы гость указал там имя пользователя, адрес электронной почты, пароль (обязательно) и дату рождения (необязательно), когда они попробуйте зарегистрироваться. но ошибка возникает.

Ошибка типа в / users / sigup create_user () принимает от 2 до 4 позиционных аргументов, но было дано 5

models.py

username = models.CharField(max_length=10, blank=False, unique=True)
language = models.CharField(
    choices=LANGUAGE_CHOICES, max_length=2, blank=True, default=LANGUAGE_KOREAN)
currency = models.CharField(
    choices=CURRENCY_CHOICES, max_length=2, blank=True, default=CURRENCY_KOREA)
birthdate = models.DateField(blank=True, null=True)
login_method = models.CharField(
    max_length=50, choices=LOGIN_CHOICES, default=LOGIN_EMAIL)

forms.py

def save(self):
    username = self.cleaned_data.get("username")
    email = self.cleaned_data.get("email")
    password = self.cleaned_data.get("password")
    birthdate = self.cleaned_data.get("birthdate")
    user = models.User.objects.create_user(
        username, email, password, birthdate)
    user.save()

views.py

   class SignUpView(FormView):
        template_name = "users/signup.html"
        form_class = forms.SignUpForm
        success_url = reverse_lazy("cores:home")

        def form_valid(self, form):
            form.save()
            username = form.cleaned_data.get("username")
            email = form.cleaned_data.get("email")
            password = form.cleaned_data.get("password")
            birthdate = self.cleaned_data.get("birthdate")
            user = authenticate(self.request, email=email, password=password)
            if user is not None:
                login(self.request, user)
            return super().form_valid(form)

хотите войти в систему гостя с электронной почтой и пароль, но как мне его получить?

1 Ответ

1 голос
/ 25 января 2020

День рождения должен быть передан в качестве аргумента ключевого слова:

user = models.User.objects.create_user(username, email, password, birthdate=birthdate)

Поскольку create_user() принимает только имя пользователя, адрес электронной почты, пароль в качестве позиционных аргументов. Любые другие дополнительные параметры должны быть ключевыми аргументами.

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