Essex
Essex

Reputation: 6118

Pass Django variables between view functions

I'm asking a question about variables handling in my Django application view.

I have 2 functions :

This is my first function :

@login_required
def Table_annuelle_BirthCertificate(request) :

    query_naissance = request.GET.get('q1')
    ...
    return render(request, 'annuel.html', context)

And my second function looks like :

@login_required
def Table_Naissance_PDF(request) :

    data = {"BirthCertificate" : BirthCertificate}

    template = get_template('Table_raw.html')
    html  = template.render(Context(data))

    filename = str('Table annuelle Naissance.pdf')
    path = '/Users/valentinjungbluth/Desktop/Django/Individus/' + filename


    file = open(path, "w+b") 
    pisaStatus = pisa.CreatePDF(html.encode('utf-8'), dest=file, encoding='utf-8')
    file.close()

    context = {
        "BirthCertificate":BirthCertificate,
        "query_naissance":query_naissance,
    }

    return render(request, 'Table.html', context) # Template page générée après PDF

So How I can add query_naissance given by user in my first function to my second one without write one more time a field ?

Then, I have to call this variable like {{ query_naissance }} in my HTML template.

Thank you

Upvotes: 1

Views: 1942

Answers (1)

user2390182
user2390182

Reputation: 73450

In order to persist information across requests, you would use sessions. Django has very good session support:

# view1: store value
request.session['query_naissance'] = query_naissance

# view2: retrieve vlaue
query_naissance = request.session['query_naissance'] 
# or more robust
query_naissance = request.session.get('query_naissance', None)

You need 'django.contrib.sessions.middleware.SessionMiddleware' in your MIDDLEWARE_CLASSES.

Upvotes: 6

Related Questions