Home > Net >  Recover data from a Django Form
Recover data from a Django Form

Time:05-29

It's my first time doing a Django Form challenge. The challenge for now is just from a HTML Template get the last_name information and store into DB from views. So I have a scenario below:

models.py:

class Person(models.Model):
    first_name = models.CharField(max_length=255)
    last_name = models.CharField(max_length=255)

an HTML template, I will put below only the form part:

      <form action="{% url 'store' %}" method="post">
        {% csrf_token %}
        <div >
          <label for="last_name" >Last Name</label>
          <div >
            <input type="text"  id="last_name" placeholder="Last Name">
          </div>
        </div>

        <div >
          <div >
            <button type="submit" >Send Last Name</button>
          </div>
        </div>
      </form>

And the views.py itself... I created a InsertLastName ModelForm to store the data from the form, but didn't work. For some reason, when I tryed to call form.cleaned_data I reveived an error about the is_valid() verification. Seens like that I'm not getting the information from label.

class InsertLastName(forms.ModelForm):
    class Meta:
        model = Person

        fields = ['last_name']
        exclude = ['first_name']

def index(request):
    persons = Person.objects.all()
    context = {'persons': persons}
    return render(request, '/index.html', context)

def store(request):
    form = InsertLastName(request.POST or None)
    print(form.cleaned_data['last_name'])

    return HttpResponse("Storing a new Last Name object into storage")

What is the correct way to get the information from last_name label in my form? I'm following that documentation and coding from a challenge template.

CodePudding user response:

Your just set attr name for your input html tag Example:

<input type="text" name="first">

And for get input in function store in view.py:

request.POST.get("first")

Add this to your html template in your form

{{persons}}
  • Related