Получение MultiValueDictKeyError при проверке пустоты поля

У меня есть форма регистрации, в которой пользователь выбирает план. Я пытаюсь проверить, что если поле пустое, то должно быть выведено сообщение. Имя поля plan. Код приведен ниже

if password1==password2:
            if CustomUser.objects.filter(email=email).exists():
                messages.info(request, 'User with same email already exists')
                return redirect('register')
            
            elif plan is None:
                messages.info(request, 'Please select a plan')
                return redirect('register') 
            else:
                user=CustomUser.objects.create_user(full_name=full_name.upper(),age=age, phone_no=phone_no, address=address, plan=plan, email=email.lower(), password=password1)
                user.is_active = False
                user.save()
                
                usr_otp = random.randint(100000, 999999)
                UserOtp.objects.create(user = user, otp = usr_otp)
                mess =  f"Hello, {user.full_name},\n Please enter the otp to validate your email and activate your account. \nYour OTP is {usr_otp} .\n Thanks!"
                
                return render(request, 'register.html', {'otp': True, 'user': user})
                # return redirect('login')

Я пробовал несколько способов проверить, пустое ли поле плана или нет, например

elif plan == ' '

если нет плана

elif plan is None

elif request.POST['plan'] == ' '

для всего этого я получаю только одну ошибку

MultiValueDictKeyError at /account/register
'plan'
Request Method: POST
Request URL:    http://127.0.0.1:8000/account/register
Django Version: 3.2.8
Exception Type: MultiValueDictKeyError
Exception Value:    
'plan'
Exception Location: C:\Users\rickb\Envs\virenv\lib\site-packages\django\utils\datastructures.py, line 78, in __getitem__
Python Executable:  C:\Users\rickb\Envs\virenv\Scripts\python.exe
Python Version: 3.9.7
Python Path:    
['C:\\Users\\rickb\\Envs\\virenv\\jgs',
 'C:\\Users\\rickb\\AppData\\Local\\Programs\\Python\\Python39\\python39.zip',
 'C:\\Users\\rickb\\AppData\\Local\\Programs\\Python\\Python39\\DLLs',
 'C:\\Users\\rickb\\AppData\\Local\\Programs\\Python\\Python39\\lib',
 'C:\\Users\\rickb\\AppData\\Local\\Programs\\Python\\Python39',
 'C:\\Users\\rickb\\Envs\\virenv',
 'C:\\Users\\rickb\\Envs\\virenv\\lib\\site-packages']
Server time:    Mon, 06 Dec 2021 23:30:33 +0530

Я не понимаю, почему я получаю это, Пожалуйста, поправьте меня, что я делаю неправильно и как проверить, что поле plan пусто.

Поле plan в html является радиокнопкой, передающей значение

Попробуйте вместо этого:

elif request.POST.get('plan') == ' '

В python квадратные скобки дают ошибку, если нет записи, тогда как функция get возвращает None..

Если поле плана пусто, то ключ 'plan' не будет существовать в request.POST. Поэтому, чтобы проверить, пусто ли это поле, вы можете сделать следующее

elif request.POST.get('plan') is None:

После get вернется None, если поле плана пусто.

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