Skip to content
Advertisement

Hi My Django Forms.cleaned_data is not giving me any output. Can someone help me?

I am trying to create a page to generate passwords and the user will select either level 0 or level 1 for varying strengths of the password. And I am not able to get the users selection of level 0 or level 1 using the radio button.

My views.py

from django.shortcuts import render
import random
import string
from types import NoneType
from random_word import RandomWords
from .forms import CHOICES

def password(request):
    passw = passGenAdvanced()
    form = CHOICES(request.POST)
    if form.is_valid():
        selected = form.cleaned_data.get("password")
        print(selected)

    return render(request, 'generator/password.html', {"password":passw})

My forms.py

from django import forms
password = [('0','Level 0'), ('1', 'Level 1')]
class CHOICES(forms.Form):
    password = forms.ChoiceField(choices=password, widget=forms.RadioSelect)

My html file

{% extends 'generator/base.html'%}
{% block content %}
<style>
    .button {
      background-color: #4CAF50;
      border: none;
      color: white;
      padding: 15px 32px;
      text-align: center;
      text-decoration: none;
      display: inline-block;
      font-size: 16px;
      margin: 4px 2px;
      cursor: pointer;
    }
</style>
<form method = "POST">
    {% csrf_token %}
    <div class="form-check">
        <input class="form-check-input" type="radio" name="password" id="Level0">
        <label class="form-check-label" for="password">Level 0</label>
    </div>
    <div class="form-check">
            <input class="form-check-input" type="radio" name="password" id="Level1">
        <label class="form-check-label" for="password">Level 1</label>
    </div>
        <button type="submit" class="button">Submit</button>
</form>
<h5 class="alert alert-success">Your Generated Password: <strong>{{password}}</strong></h5> 
{% endblock %}

Sorry if the problem may seem obvious, I am new to django.

After printing out the form.error it keeps saying this “on” it isn’t even one of my radio options. So how does it give me that?

Advertisement

Answer

The radio inputs are missing the value so add value for each radio and try again.

Advertisement