Как исправить ошибку отсутствия у формы 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.