Я новичок, изучающий django, я проверял несколько раз, но не нашел, где его возвращаемый кортеж вместо словаря может кому-нибудь помочь.
формы.py
from django import forms
from .models import ModelClas
class FormClass(forms.ModelForm):
passw = forms.CharField(widget=forms.PasswordInput())
repass = forms.CharField(widget=forms.PasswordInput())
def clean(self):
super(FormClass, self).clean()
inputpass = self.cleaned_data.get('passw')
inputrepass = self.cleaned_data.get('repass')
if inputpass != inputrepass:
raise forms.ValidationError("Password not matched. please type again.")
return inputpass, inputrepass
class Meta:
model = ModelClas
fields = '__all__'
модели.py
from django.db import models
# Create your models here.
class ModelClas(models.Model):
fname = models.CharField(max_length=30)
lname = models.CharField(max_length=30)
email = models.EmailField()
mobile = models.IntegerField()
passw = models.CharField(max_length=30)
repass = models.CharField(max_length=30)
просмотры.py
def signpage(request):
if request.method == 'GET':
form = forms.FormClass()
if request.method == 'POST':
form = forms.FormClass(request.POST)
if form.is_valid():
print("Validation Successfull")
print("FName :", form.cleaned_data['fname'])
print("LName :", form.cleaned_data['lname'])
print("Email :", form.cleaned_data['email'])
print("Mobile :", form.cleaned_data['mobile'])
print("Password :", form.cleaned_data['passw'])
print("Re-type Password :", form.cleaned_data['repass'])
form.save(commit=True)
return HttpResponseRedirect('/accounts/logout')
return render(request, 'registration/signup.html', {'form':form})
Ошибка. Даже понимание этой ошибки действительно сложно для меня, если кто-нибудь объяснит, было бы здорово
Environment:
Request Method: POST
Request URL: http://127.0.0.1:8000/signup/
Django Version: 3.0.6
Python Version: 3.6.8
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'UserRegis']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Traceback (most recent call last):
File "/home/ashish/.local/lib/python3.6/site-packages/django/core/handlers/exception.py", line 34, in inner
response = get_response(request)
File "/home/ashish/.local/lib/python3.6/site-packages/django/core/handlers/base.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/home/ashish/.local/lib/python3.6/site-packages/django/core/handlers/base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/ashish/DjangoProjects/Django/userd/UserRegis/views.py", line 26, in signpage
if form.is_valid():
File "/home/ashish/.local/lib/python3.6/site-packages/django/forms/forms.py", line 180, in is_valid
return self.is_bound and not self.errors
File "/home/ashish/.local/lib/python3.6/site-packages/django/forms/forms.py", line 175, in errors
self.full_clean()
File "/home/ashish/.local/lib/python3.6/site-packages/django/forms/forms.py", line 378, in full_clean
self._post_clean()
File "/home/ashish/.local/lib/python3.6/site-packages/django/forms/models.py", line 385, in _post_clean
exclude = self._get_validation_exclusions()
File "/home/ashish/.local/lib/python3.6/site-packages/django/forms/models.py", line 345, in _get_validation_exclusions
field_value = self.cleaned_data.get(field)
Exception Type: AttributeError at /signup/
Exception Value: 'tuple' object has no attribute 'get'