Django Вход не находит зарегистрированного пользователя при создании с помощью UserCreateForm - PullRequest
0 голосов
/ 05 августа 2020

У меня здесь FBV для веб-сайта электронной коммерции, у меня есть два класса, Customer и ShippingAddress, а затем пользователь по умолчанию,

def signup(request):

    if request.method == 'POST':
        user_form = forms.UserCreateForm(data=request.POST)
        shipping_form = forms.ShippingAddressCreateForm(data=request.POST)

        if user_form.is_valid() and shipping_form.is_valid():

            user = user_form.save()
            user.set_password(user.password)
            user.save()

            customer = Customer.objects.create(user=user, name=user.username, email=user.email, is_authenticated=True)

            shipping_info = shipping_form.save(commit=False)
            shipping_info.customer = customer
            shipping_form.save()
        else:
            print(user_form.errors, shipping_form.errors)

    else:
        user_form = forms.UserCreateForm()
        shipping_form = forms.ShippingAddressCreateForm()

    # Function from utils.py
    data = cartData(request)
    cartitems = data['cartItems']
    context_dict = {'form': user_form, 'shipping_form': shipping_form, 'cartitems': cartitems}
    return render(request, "accounts/signup.html", context_dict)

Все работает нормально, когда я go панель администратора, у меня есть пользователь, клиент, который ссылается на пользователя, и ShippingAddress, который ссылается на клиента, все детали также в порядке и работают должным образом, однако проблема заключается в входе в систему, я использую LoginView для входа,

path('login/',auth_views.LoginView.as_view(
    template_name="accounts/login.html"),
     name='login'),

Но когда я ввожу данные, он говорит, что они неверны, хотя я на 100%, я попытался вручную обработать вход с помощью FBV, но возникает та же проблема, я также обнаружил, что когда я добавляю учетную запись со страницы администратора или суперпользователя с терминала, то логин работает нормально, а это значит, что я должен делать что-то не так в функции регистрации.

РЕДАКТИРОВАТЬ

Только что выяснил, что даже если я назначаю статус персонала пользователю, созданному в представлении регистрации, он не позволяет мне войти на страницу администратора, что, я думаю, заставляет меня nse, но я был бы очень признателен за помощь в этом, потому что я полностью в тупике.

EDIT 2

Пытался зарегистрировать пользователя с помощью встроенного Django CreateView, который работал хорошо, однако это вызывает проблему, заключающуюся в том, что мне приходится использовать другую страницу для настройки клиента и адреса доставки, и если этот человек не входит в систему, то остальная часть веб-сайта ломается. Поэтому я бы предпочел иметь возможность настраивать обе формы и все классы на одной веб-странице и классе

Любая помощь будет принята с благодарностью.

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