Как исправить ошибку отсутствия у формы django атрибута clean_data?

У меня такая форма

class RegisterForm(UserCreationForm):
    email = forms.EmailField()

    class Meta:
        model = User
        fields = ["username", "email", "password1",
                  "pass"]

и этот вид

def register(req):
    if req.method == 'POST':
        form = RegisterForm(req.POST)
        print('yaml')
        if form.is_valid():
            form.save()
        return redirect("/home")
    else:
        form = RegisterForm()
        form.save()
        return render(req, "users/register.html", {"form":form})

но когда я посещаю url

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include("main.urls")),
    path('register/', userViews.register, name="register"),
    path('', include("django.contrib.auth.urls")),
]

Я продолжаю получать эту ошибку

Internal Server Error: /register/
....
AttributeError: 'RegisterForm' object has no attribute 'cleaned_data'

Пожалуйста, мне нужна помощь. Заранее спасибо

Уберите form.save() в случае GET запроса: вы можете сохранить объект только в том случае, если он ограничен и действителен, поэтому:

def register(request):
    if request.method == 'POST':
        form = RegisterForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            # only redirect when the POST is successful
            return redirect('home')  # 🖘 use the name of a view
    else:
        form = RegisterForm()  # no form.save()
    return render(request, 'users/register.html', {'form': form})

Во-первых, pass не является полем во встроенной модели User, есть два поля, связанных с паролями, которые password1 и password2, если и пока вы не изменили их в оригинальном коде django.

Нет необходимости в перенаправлении, пожалуйста, удалите form.save() в условии else.

Вернуться на верх