Django is the most popular framework for python.
Here we'll discuss about save a form into database in Django.
Here we'll discuss about save a form into database in Django.
Step 1:
First create a model 'models.py' for DB table.
we are creating a model named 'Request'.
run command
from django.db import models
# Create your models here.
class Request(models.Model):
request_url = models.CharField(max_length=255)
created_at = models.DateTimeField('date published')
run command
python manage.py migrate. This will create a table into your DB, with two columns.`request_url` and `created_at`.
Step 2:
Now create a 'forms.py' to define your form. This will render a form in template with HTML code.
Here creating a form 'RequestForm'.
we have a single field form 'request_url'
Now import your model and form into your views. Discuss in next step.
In views.py we import our model and Form, and render a template which is exist in our app directory.
To render a form on HTML page create a page 'index.html'
Here '{{ form }}' is a variable which sent from the views. It has an object of form which is created in forms.py
Now our form is ready.
views.py already has the code to save form into databse. But we clarify again to better understand to save a form.
This code already placed in views.py.
it will check the form is submitted or not. We have POST method in form. When form will submit the request method will change from GET to POST and we match the condition.
And here we create an object of our model and put the form values init.
Then call the 'save()' method to save all values in db.
Thats it.
from django import forms
class RequestForm(forms.Form):
request_url = forms.CharField(label="Enter your URL", max_length=500)
we have a single field form 'request_url'
Now import your model and form into your views. Discuss in next step.
Step 3:
views.py
from django.shortcuts import render, get_object_or_404
from django.http import HttpResponse, Http404, HttpResponseRedirect
from .models import Request
from .forms import RequestForm
from django.utils import timezone
# Create your views here.
def index(request):
if request.method == 'POST':
form = RequestForm(request.POST)
if form.is_valid():
request_obj = Request(request_url = request.POST.get('request_url'), created_at = timezone.now())
request_obj.save()
return HttpResponseRedirect("/client")
else:
form = RequestForm()
context = {
'title': "Save form",
'form': form
}
return render(request, 'client/index.html', context)
In views.py we import our model and Form, and render a template which is exist in our app directory.
To render a form on HTML page create a page 'index.html'
Step 4:
index.html
<form action="/client/" method="post" class="col s12">
{% csrf_token %}
<div class="row">
{{form}}
<div class="col s6">
<input type="submit" class="waves-effect waves-light btn" value="Submit">
</div>
</div>
</form>
Here '{{ form }}' is a variable which sent from the views. It has an object of form which is created in forms.py
Now our form is ready.
views.py already has the code to save form into databse. But we clarify again to better understand to save a form.
if request.method == 'POST':
form = RequestForm(request.POST)
if form.is_valid():
request_obj = Request(request_url = request.POST.get('request_url'), created_at = timezone.now())
request_obj.save()
return HttpResponseRedirect("/client")
else:
form = RequestForm()
This code already placed in views.py.
Explain:
if request.method == 'POST':
it will check the form is submitted or not. We have POST method in form. When form will submit the request method will change from GET to POST and we match the condition.
if form.is_valid():
It will check all required validation rules which is already defined in forms.py.request_obj = Request(request_url = request.POST.get('request_url'), created_at = timezone.now())
request_obj.save()
return HttpResponseRedirect("/client")
And here we create an object of our model and put the form values init.
Then call the 'save()' method to save all values in db.
Thats it.
Comments
Post a Comment