Я продолжаю получать следующую ошибку при отправке данных формы регистрации - PullRequest
0 голосов
/ 11 июля 2019

Я пытаюсь создать банковскую систему, используя DRF.Мне нужно автоматически назначать пользователям номер учетной записи, сразу же после того, как они заполнили свои регистрационные данные.Кроме этого, прошу прощения, если у меня нет правильных навыков задавания вопросов.

Я использую django - версия 2.2.3

models.py

class AccountDetails(models.Model):
    GENDER_CHOICE = (
        ("M", "Male"),
        ("F", "Female"),
    )
    user = models.OneToOneField(
        User,
        related_name='account',
        on_delete=models.CASCADE,
    )
    account_no = models.AutoField(
        unique=True,
        primary_key=True,
        null=False,
        validators=[
            MinValueValidator(10000000),
            MaxValueValidator(99999999)
        ]
    )

views.py

def register_view(request):
    if request.user.is_authenticated:
        return redirect("home")
    else:
        user_form = UserRegistrationForm(
            request.POST or None,
        )
        account_form = AccountDetailsForm(
            request.POST or None,
            request.FILES or None
        )
        address_form = UserAddressForm(
            request.POST or None
        )

        if user_form.is_valid() and account_form.is_valid() and address_form.is_valid():
            user = user_form.save(commit=False)
            account_details = account_form.save(commit=False)
            address = address_form.save(commit=False)
            password = user_form.cleaned_data.get("password1")
            user.set_password(password)
            user.save()
            account_details.user = user
            account_details.save()
            address.user = user
            address.save()
            new_user = authenticate(
                account_no=user.account_no, password=password
            )
            login(
                request, new_user, backend='accounts.backends.AccountNoBackend'
            )
            messages.success(
                request,
                '''Thank You For Creating A Bank Account {}.
                Your Account Number is {}, Please use this number to login
                '''.format(new_user.full_name, new_user.account_no))

            return redirect("home")

        context = {
            "title": "Create a Bank Account",
            "user_form": user_form,
            "account_form": account_form,
            "address_form": address_form,
        }

        return render(request, "accounts/register_form.html", context)

следующеевывод:

AttributeError at /accounts/register/
'AnonymousUser' object has no attribute '_meta'

Ошибка, которая указывает на: views.py:

#request, new_user, backend='accounts.backends.AccountNoBackend'

Я ожидаю, что будет перенаправлен на страницу сведений о транзакции.

Полный вызов трассировки:

Traceback (последний вызов был последним): файл "/home/hunter/Desktop/banking/venv/lib/python3.6/site-packages/django/core/handlers/exception.py", строка34, во внутреннем ответе = get_response (запрос)

Файл "/home/hunter/Desktop/banking/venv/lib/python3.6/site-packages/django/core/handlers/base.py",строка 115, в _get_response response = self.process_exception_by_middleware (e, request)

File "/home/hunter/Desktop/banking/venv/lib/python3.6/site-packages/django/core/handlers/base.py ", строка 113, в _get_response response = wrapped_callback (запрос, * callback_args, ** callback_kwargs)

Файл" /home/hunter/Desktop/banking/banking_system/accounts/views.py ", строка 48, в запросе register_view, new_user, backend = 'accounts.backends.AccountNoBackend'

Файл "/home/hunter/Desktop/banking/venv/lib/python3.6/site-packages/django/contrib / auth / init .py ", строка 126, в файле request.session [SESSION_KEY] = user._meta.pk.value_to_string (user)

File" / home / hunter /Рабочий стол / банковское дело / venv / lib / python3.6 / site-packages / django / utils / functions.py ", строка 257, во внутренней функции возврата (self._wrapped, * args)

AttributeError: 'AnonymousUser'У объекта нет атрибута' _meta '[11 / Jul / 2019 13:06:54] "POST / account / register / HTTP / 1.1" 500 84970

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