Форма django не вставляет значения из файла views.py
Я пытаюсь вставить значения в базу данных Django, используя HTML и сгенерированное значение из views.py
Это мой views.py
def NewPassword(request):
if request.method == "POST":
if request.POST.get('app_name') and request.POST.get('url') and request.POST.get('username') and request.POST.get('email') and request.POST.get('Category'):
form = PasswordsForm()
form.app_name = request.POST.get('app_name')
form.url = request.POST.get('url')
form.username = request.POST.get('username')
form.email = request.POST.get('email')
form.category = request.POST.get('Category')
print(form.app_name,form.url,form.username,form.email,form.category)
new_password = GeneratePassword()
new_password = HashPassword(new_password)
form.password = new_password
if form.is_valid():
print("Form saved")
form.save()
return redirect('/')
else:
form = PasswordsForm()
form.app_name = request.POST.get('app_name')
form.url = request.POST.get('url')
form.username = request.POST.get('username')
form.email = request.POST.get('email')
form.category = request.POST.get('category')
form.password = request.POST.get('password')
print(form.app_name,form.url,form.username,form.email,form.category,form.password)
if form.is_valid():
print("Form saved")
form.save()
return redirect('/')
if form.is_valid() != True:
print("Invalid Form")
else:
form = PasswordsForm()
form = PasswordsForm()
return render(request,'manager/create.html',{'form':form})
Я получаю ошибку Invalid Form, потому что форма не прошла проверку if form.is_valid() != True
Я не думаю, что это ошибка формы, потому что она полностью генерируется Django. Он не выполняет условие is_valid, но все конкретные значения были добавлены в форму.
Это файл models.py
TECH = 'TECH'
NONE = 'NONE'
BIZ = 'BIZ'
EMAIL = 'EMAIL'
ENT = 'ENT'
FIN = 'FIN'
GAMES = 'GAMES'
NEWS = 'NEWS'
OTHER = 'OTHER'
SHOP = 'SHOP'
SOCIAL = 'SOCIAL'
SPORTS = 'SPORTS'
TECH = 'TECH'
TRAVEL = 'TRAVEL'
UTIL = 'UTIL'
CATEGORIES = (
(TECH,'Technology'),
(NONE,'No category'),
(BIZ,'Business'),
(EMAIL,'Email'),
(ENT,'Entertainment'),
(FIN,'Finance'),
(GAMES,'Games'),
(NEWS,'News'),
(OTHER,'Other'),
(SHOP,'Shopping'),
(SOCIAL,'Social media'),
(SPORTS,'Sports'),
(TECH,'Tech'),
(TRAVEL,'Travel'),
(UTIL,'Utilities'),
)
class Passwords(models.Model):
app_name = models.CharField(max_length=100)
url = models.URLField()
username = models.CharField(max_length=100)
email = models.EmailField(null=True)
password = models.CharField(max_length=100)
category = models.CharField(choices=CATEGORIES,default='No Category',max_length=100)
Выяснил ответ, он регистрировался как пустая форма, а views.py имел
form.category = request.POST.get('Category')
когда следовало
form.category = request.POST.get('category')