The GET method sends the encoded user information appended to the page request. The page and the encoded information are separated by the ? character. For eg. 'https://www.domain.com/page.php?id=5&name=user' . Get method is restricted to send upto 1024 characters only. Get is not used to send sensitive informations like password. Cannot be used to send binary data like images to the server.
Input name from user and display name with welcome
home.html <form action="hello"> Enter Name: <input type="text" name="text1"><br> <input type="submit"> </form>
Change your views.py with following code:
view.py def hello(request): n=request.GET['text1'] return render(request,'hello.html',{'name':n})
urls.py path('hello', views.hello, name='hello'),
hello.html Welcome:{{name}}
The POST method transfer information via HTTP headers. Does not have any restriction on data size to be sent. can be used to send binary data like images. The data sent by POST method goes through HTTP header so security depends on HTTP protocol.
Input name from user and display name with welcome using POST method
home.html <form action="hello" method="post"> {% csrf_token %} Enter Name: <input type="text" name="text1"><br> <input type="submit"> </form>
Change your views.py with following code:
view.py def hello(request): n=request.POST['text1'] return render(request,'hello.html',{'name':n})
urls.py path('hello', views.hello, name='hello'),
hello.html Welcome:{{name}}
Input 2 numbers from user and display sum
home.html <form action="hello"> Enter 1st Number: <input type="text" name="num1"><br> Enter 2nd Number: <input type="text" name="num2"><br> <input type="submit"> </form>
Change your views.py with following code:
view.py def add(request): try: n1=int(request.GET['num1']) #n1=int(request.GET.get('num1') n2=int(request.GET['num2']) r=n1+n2 except: pass: return render(request,'add.html',{'result':r})
urls.py path('add', views.add, name='add'),
hello.html Result:{{result}}
Input 2 numbers from user, display sum and retain values using post method
home.html <form action="" method="post"> {% csrf_token %} Enter 1st Number: <input type="text" name="num1" value="{{n1}}"><br> Enter 2nd Number: <input type="text" name="num2" value="{{n2}}"><br> <input type="submit"> Result:{{res}} </form>
Change your views.py with following code:
view.py def add(request): data={} try: n1=int(request.POST['num1']) #n1=int(request.POST.get('num1') n2=int(request.POST['num2']) r=n1+n2 data={ 'n1':n1, 'n2':n2, 'res':r } except: pass: return render(request,'add.html',data)
urls.py path('add', views.add, name='add'),
view.py from django.http import redirect def add(request): data={} try: n1=int(request.POST['num1']) #n1=int(request.POST.get('num1') n2=int(request.POST['num2']) r=n1+n2 data={ 'n1':n1, 'n2':n2, 'res':r } url="/pageurl/?result={}".format(r) return HttpResponseRedirect(url) except: pass: return render(request,'add.html',data)
view.py def pageurl(request): if request.method=='GET': data=request.GET.get('result') return render(request,'pageurl.html',{'data':data})
pageurl.html Result = {{data}}
Example 1: Another way to redirect url:
view.py from django.shortcuts import redirect def add(request): url="/pageurl/?result={}".format(r) return redirect(url)
Example 2:
form.html <form method="post" action="{% url 'submitform' %}">
urls.py path('submitform/', views.submitform, name="submitform")
views.py def submitform(request): return HttpResponse(requests) data={} try: n1=int(request.POST['num1']) n2=int(request.POST['num2']) r=n1+n2 data={ 'n1':n1, 'n2':n2, 'res':r } return HttpResponse(r) except: pass: