Ошибка регистрационной формы не могу найти
Я использую Django на Mac. На прошлой неделе регистрация прошла хорошо, но теперь, когда я повторно запускаю его, я столкнулся с проблемой, и я не могу понять, в чем проблема. Надеюсь, кто-нибудь сможет мне помочь. Спасибо
error: [19/Sep/2022 20:24:50] "POST /registerUser/ HTTP/1.1" 200 6995 /opt/homebrew/lib/python3.9/site-packages/PIL/Image.py:3011: DecompressionBombWarning: Размер изображения (139513096 пикселей) превышает лимит в 89478485 пикселей, может быть DOS-атака бомбы декомпрессии. warnings.warn( недопустимая форма
<связанный метод BaseForm.non_field_errors из < UserForm bound=True, valid=True, fields=(first_name;middle_name;last_name;username;email;mobile_number;password;confirm_password)>>
Виды
def registerUser(request):
if request.user.is_authenticated:
messages.warning(request, "You are already logged in!")
return redirect ('myAccount')
elif request.method == 'POST':
form = UserForm(request.POST)
m_form = MemberForm(request.POST, request.FILES)
try:
if form.is_valid() and m_form.is_valid():
first_name = form.cleaned_data['first_name']
middle_name = form.cleaned_data['middle_name']
last_name = form.cleaned_data['last_name']
username = form.cleaned_data['username']
email = form.cleaned_data['email']
mobile_number = form.cleaned_data['mobile_number']
password = form.cleaned_data['password']
user = User.objects.create_user(first_name=first_name, middle_name=middle_name, last_name=last_name, username=username, email=email, mobile_number=mobile_number, password=password)
user.role = User.MEMBER
user.save()
member = m_form.save(commit=False)
member.user = user
member.save()
# send verification email
mail_subject = 'Please Activate Your Account'
email_template = 'accounts/emails/account_verification_email.html'
send_verfication_email(request, user, mail_subject, email_template)
messages.success(request, 'You have signed up successfully! Please check your email to verify your account.')
print(user.password)
return redirect('signin')
except Exception as e:
print('invalid form')
messages.error(request, str(e))
else:
form = UserForm()
m_form = MemberForm()
context = {
'form' : form,
'm_form' : m_form,
}
return render(request, 'accounts/register.html', context)
Модель
Форма
class DateInput(forms.DateInput):
input_type = 'date'
class UserForm(forms.ModelForm):
first_name = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'Jones', 'style': 'width: 150px; '}))
middle_name = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'A', 'style': 'width: 150px; '}))
last_name = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'Smith', 'style': 'width: 150px; '}))
mobile_number = forms.CharField(max_length=15, validators=[RegexValidator(
'^\+[0-9]{1,3}\.?\s?\d{8,13}', message="Phone number must not consist of space and requires country code. eg : +639171234567")],widget=forms.TextInput(attrs={'placeholder': '09123456789', 'style': 'width: 305px; '}),
error_messages={'unique': ("Mobile Number already exists.")})
email = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'jonesmith@gmail.com', 'style': 'width: 460px; '}),
error_messages={'unique': ("Email already exists.")},)
username = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'Jones_Smith31', 'style': 'width: 460px; '}),
error_messages={'unique': ("Username already exists.")},)
password = forms.CharField(widget=forms.PasswordInput(attrs={'placeholder': '********', 'style': 'width: 460px; '}))
#password = forms.CharField(validators=[MinLengthValidator(8),RegexValidator('^(?=.*[A-Z])(?=.*[!@#$&*])(?=.*[0-9])(?=.*[a-z])$', message="Password should be a combination of Alphabets and Numbers")], widget=forms.PasswordInput(attrs={'placeholder': '********', 'style': 'width: 460px; '}))
confirm_password = forms.CharField(widget=forms.PasswordInput(attrs={'placeholder': '********', 'style': 'width: 460px;' }))
class Meta:
model = User
fields = ['first_name', 'middle_name', 'last_name', 'username', 'email', 'mobile_number', 'password']
def clean(self):
clean_data = super(UserForm, self).clean()
password = clean_data.get('password')
confirm_password = clean_data.get('confirm_password')
if password != confirm_password:
raise forms.ValidationError(
"Password and Confirm Password does not match!"
)
class MemberForm(forms.ModelForm):
birthdate = forms.DateField(widget=DateInput(attrs={'class': 'form-control ', }))
profile_picture = forms.FileField(widget=forms.FileInput(attrs={'class': 'btn btn-info'}))
class Meta:
model = userMember
fields = ['birthdate', 'upload_id', 'profile_picture']
Я думаю, что pil защищает вас от больших файлов. Вы можете отключить ее, если хотите.
from PIL import Image
Image.MAX_IMAGE_PIXELS = None