Django Forms Basics and Cool Things

Looking into Forms basics, Dynamically creating forms, Formsets Creating Forms

What are Forms?

  • If you want a website that can take user input you should use html forms
  • But i'm sure you guys know that:)

Why use Django Forms?

  • Easy to create html forms and insert them in a template.
  • Help Developers from creating vulnerabilities.
  • Security, Security, Security!

Creating Basic Forms

Creating your own forms with basic fields.

Basic Form with a variety of fields

arugments for form fields

  • label
  • widget
  • blank,null
  • required
  • initial

Using the basic form in a view

Forms in templates

  • rendering the basic form
  • using the .as_ul .as_p methods
  • making your own forms

Files in Forms

  • Uploading files you need to enctype="multipart/form-data" to the form
  • you need to use request.FILES (rather than request.POST to access the files
  • you also need to specify where your files will be saved with your media_root

ModelForms

Are awesome and will make your life better and should be used a lot!

Why are ModelForms so cool?

  • Make you do less work
  • Forms html automatically created!
  • saves the validated and cleaned data.

What is a model form?

  • Forms basically a form based on your model.

ModelForm

Model

ModelForm in a view

This is 90% of forms.

Knowing basic forms and model forms will get you really far in django.

Moving to more cool things with forms

Formsets and

Dynamically building forms

 

Formsets

A short introduction as well as trying to make them not as scary.

What are formsets?

  • A formset allows you to have multiple forms on one page.
  • say for example emails for friends that you'd like to send to.

How to use a formset

Using formsets are easy

  • Use your already existing form and create a formset with the formset_factory method ( where you use the form)
  • Or if you're using a model form you can use the modelformset_factory (where you use the model)

How to show a formset in a template

  • In the form include the "formset.management_form" to the from.
  • Loop through the formset to print out the forms.

How to add more forms dynamically? Part 1

  • To the right you see the solution I've come up with
  • along with rendering the formset, render an empty form to append the formset

How to add more forms dynamically? Part 2

  • This solution uses underscore.js and jquery
  • takes the empty form changes the id.
  • Changes the form management. of the formset

Building Forms Dynamically

Creating Forms that can be based off of data in a model.

Create Models

First thing we have to do is create the models. Here we create two models: Survey and Question.

Custom Form

Here our form is created the questions that saved based on the survey key.

Our field types are a one to one mapping of the field type choices in our models.

View for our dynamic form

Here our form is created the questions that saved based on the survey key.

Our field types are a one to one mapping of the field type choices in our models.

Questions?

Thank you so much!

  • linkedin(send me a message): Daniel Mouris 
  • Twitter(I don't use it that much): @dgmouris 
  • Have fun coding! 

django-forms

By Daniel Mouris

django-forms

  • 1,116