Создание пользовательской модели?form.is_valid всегда возвращает false - PullRequest
0 голосов
/ 24 марта 2019

Попытка добавить нового пользователя (используя модель пользователя по умолчанию в Django).

#api/views.py
@csrf_exempt
@api_view(['GET', 'POST', ])
def signup(request):
    print(request.POST)
    if request.method == 'POST':
        form = UserCreationForm(data=request.POST)
        if form.is_valid():
            form.save()
            return Response('created new user')
        else:
            return Response('did not')

Вот форма.Я не использую необработанный html, это компонент React

        <form className="register-form" noValidate action="api/register/"
            method="post" autoComplete="off">
                <input type="text" name="username"></input>
                <input type="password" name="password"></input>
                <input type="submit" value="Submit"></input>
        </form>

, нажав кнопку успешно отправить, отправляет запрос на публикацию в api / register, который в urls.py указывает его на views.signup.

form.is_valid всегда имеет значение false, поэтому пользователь не создается.Насколько я могу судить, единственные обязательные поля для создания пользователя - это имя пользователя и пароль.Я также попытался удалить метку «данные» в UserCreationForm (data = request.POST).Это тоже не работает.Куда я иду не так?

1 Ответ

0 голосов
/ 24 марта 2019

Решено печатью на консоль и проверкой ошибок в функции регистрации

        print(request.POST)
        print(form.errors)
        print(form.non_field_errors)

Модель пользователя фактически требует имя пользователя, пароль1 и пароль 2. Изменилась форма на

<form className="register-form" noValidate action="api/register/"
            method="post" autoComplete="off">
                <input type="text" name="username"></input>
                <input type="password" name="password1"></input>
                <input type="password" name="password2"></input>
                <input type="submit" value="Submit"></input>
        </form>

, который решил проблему

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