Heroku Django request.POST giving wrong values

I have deployed an app in heroku build using django.In my django views.py iam getting some value using request.POST and storing in a global variable so that i can access that value in another function which is then rendered into the template. Eveything worked fine on devolopment server but when i deployed it on heruko,request.POST is not retriving the correct value.

views.py:

serv='--'
def home(request):
global serv
if request.method=='POST':
    dayCheck.clear()
    serv=request.POST['service']
    return HttpResponseRedirect('func')

def func(request):
    global serv
    #Doing something,does not involve serv
    return render(request,'index.html',{'service':serv})

When i try to log serv in home() it gives correct value but different value in func and the same is rendered,mostly it will be value which i previously clicked or sometimes it would be just -- as declared. Please help me! Thanks in Advance


Please don't. Using global state in a webserver is a very very severe antipattern. Often later several Django processes will run to handle the requests concurrently: this means that the next request can be processed by a different Django process. Furthermore it is also possible that in between the request of a different user is processed.

Usually you pass data through the URL parameter, the querystring, the database, POST parameters, session variables and cookies (where session variables and cookies are usually not a good idea either, since these can easily collide with other views that store some state into the sessions or cookies).

You thus can thus for example make use of a URL parameter, where you map func to:

urlpatterns = [
    # …,
    path('func/<path:param>/', views.func, name='func')
]

then you thus make a request with:

from django.shortcuts import redirect

def home(request):
    if request.method == 'POST':
        dayCheck.clear()
        serv = request.POST['service']
        return redirect('func', param=serv)

def func(request, param):
    # here param has the value for serv in the previous request
    return render(request,'index.html',{'service':serv})

since it will make a GET request to func, func is furthermore not allowed to make any changes to the entities either, since this is specified by the HTTP specifications on safe methods [w3.org]:

In particular, the convention has been established that the GET and HEAD methods SHOULD NOT have the significance of taking an action other than retrieval. These methods ought to be considered "safe".