2017-02-08 5 views
0

Ich stelle eine Frage zur Variablenbehandlung in meiner Anwendungsansicht Django.Übergeben Sie Django-Variablen zwischen Ansichtsfunktionen

Ich habe 2 Funktionen:

  • Die erste lässt mich zu display query result in einem Array mit GET filter parameter (in meinem Fall, schreibt User Jahr und Django gibt alle Objekte nach diesem Jahr werden wir query_naissance nennen. diese Variable).

  • Die zweite lässt mich eine PDF erstellen. Ich habe viele Variablen, aber ich möchte eine weitere Zeit query_naissance in meinem PDF nehmen.

Dies ist meine erste Funktion:

@login_required 
def Table_annuelle_BirthCertificate(request) : 

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

Und meine zweite Funktion wie folgt aussieht:

@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 wie ich query_naissance durch Benutzer in meiner ersten Funktion zu meinem zweiten gegebenen hinzufügen man ohne noch einmal ein Feld zu schreiben?

Dann muss ich diese Variable wie in meiner HTML-Vorlage aufrufen.

Danke

+0

Diese Ansichten werden in zwei verschiedenen Anfragen aufgerufen. Sie hängen also entweder eine entsprechende Abfragezeichenfolge an den Link an, der den Benutzer an die zweite Ansicht sendet, oder Sie speichern den Wert in der Sitzung. – schwobaseggl

+0

Ok, ich mache einige Untersuchungen über Wertspeicherung in der Sitzung. – Deadpool

+2

'request.session ['query_ness' '] = query_ness' zu speichern und' query_signage = request.session ['query_ness'] 'zu holen ;-) Sie brauchen' 'django.contrib.sessions.middleware.SessionMiddleware', 'in deine 'MIDDLEWARE_CLASSES'. – schwobaseggl

Antwort

2

Um Informationen über Anfragen zu beharren, würden Sie Sitzungen verwenden. Django hat eine sehr gute 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) 

Sie benötigen 'django.contrib.sessions.middleware.SessionMiddleware' in Ihrem MIDDLEWARE_CLASSES.

Verwandte Themen