Posted under » Django on 18 Jun 2021
After creating a form layout, let us make the form's back end (in Perl we call it the CGI). In Django, the "CGI" is in the views.py
As mentioned, this CGI or application is like a page. If the CGI is "self" then you edit the form def itself. Otherwise you have to create another def by adding the URLconf to the urls.py which is connected to the views.py which may look like this.
path('vote', views.vote, name='vote'),
We already learnt creating a minimal form and now we also have learnt how to use the forms class to do the form layout. Combining what we have learnt, the CGI may look like this.
from django.http import HttpResponse from django.shortcuts import render from .models import Questionnaire from .forms import VoteForm def index(request): return HttpResponse("Hello, world. You're at the feel index.") def q1(request): form = VoteForm() return render(request, 'feel/q1.html', {'form': form}) def vote(request): if request.method=='POST': form = VoteForm(request.POST) if form.is_valid(): q_id = form.cleaned_data['q_id'] rating = form.cleaned_data['rating'] form.save() form = VoteForm() return render(request, 'feel/q1.html')
Note the import models and forms.
Def q1 is the form and vote is the CGI.
Only if post is submitted and valid then we do vote.
Form.save() is the command to save to database. Django takes care of all the MySQL insert, update and stuff.
After which, it will go back to template q1 but no form is defined.