Django is an open-source, high-level Python web framework that encourages rapid development and clean, pragmatic design.
ChoiceField
in Django Forms is a string field for selecting a particular choice out of a list of available choices. ChoiceField
can be used in cases where there are a limited number of pre-defined options to select from, e.g., selecting a country from a list of countries or a day from among the seven days of the week.
ChoiceField
is similar to an option field in web pages, where someone can select an option of their choice from a list of options.
ChoiceField
uses an iterable of a 2-tuple to add as choices.
A basic implementation of a ChoiceField
is shown below:
class FRUIT(forms.Form):CHOICES = ((1, 'Orange'),(2, 'Mango'),(3, 'Strawberries'),(4, 'Grapes'),)name = forms.CharField()category = forms.ChoiceField(choices=CHOICES)
In the code above, the fruit names are the choices that can be chosen from.
A complete demonstration of how the choices would be part of the application is provided below.
Let’s start with installation:
pip install pipenv
pipenv shell
pipenv install django
Then:
django-admin startproject DjangoChoiceField ./
python manage.py startapp codebase
python manage.py migrate
python manage.py runserver
Next, add the code below to settings.py
.
INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','codebase']
In the codebase
app folder, go to forms.py
and use ChoiceField
to make the options for the form.
from django import forms#The choices to choose fromDEPARTMENTS =(( "BCH","biochemistry"),( "EE","electrical engineering"),( "BTC", "biotechnology"),("MCB","microbiology"),( "BIO","biology"),( "CE", "chemical engineering"),( "OPT", "Optometry"),( "SE", "software engineering"),( "PUT", "public Health"),("STA", "statistics" ),)# creating a formclass ChoiceForm(forms.Form):departments = forms.ChoiceField(choices = DEPARTMENTS)
In views.py
, a view for the web page itself is created as follows.
from django.shortcuts import renderfrom .forms import ChoiceForm# Create your views here.def home(request):form = ChoiceForm()context = {'form': form}return render( request,"app/home.html", context)
In the codebase app, create a folder and name it “templates.” Inside the “templates” folder, create another folder and name it “app.” Then, inside the “app” folder, create the home.html
file, which displays a web page that contains the form and a button to submit it.
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title></head><body><br>Different FUTO departments<br><br><form method = "GET">{{ form }}<input type = "submit" value = "Submit"></form></body></html>
In the “DjangoChoiceField” folder, the following is added to urls.py
.
from django.contrib import adminfrom django.urls import path, includeurlpatterns = [path('admin/', admin.site.urls),# including the codebase urls.py filepath('', include('codebase.urls'))]
In the codebase folder, create a file and name it urls.py
with the content below to route the web pages across the application.
from django.urls import path#import the home function from the views.py filefrom .views import homeurlpatterns = [#creating a routepath('', home, name='home'),]
Finally, to run the application and interact with the form, run the following commands:
python manage.py makemigrations
python manage.py migrate
python manage.py runserver
The result can be viewed on the localhost http://127.0.0.1:8000
to access the app.