2017-02-08 1 views
0

Django 애플리케이션보기에서 변수 처리에 관한 질문을하고 있습니다.보기 기능 간의 장고 변수 전달

내가이 개 기능을 가지고 :

올해에 따라
  • 첫 번째는 내 경우에는 (GET filter parameter와 배열에 display query result 날 수는 사용자가 해 쓰고 장고 모든 개체를 반환 우리는 query_naissance를 호출합니다. 이 변수).

  • 두 번째로는 PDF을 만들 수 있습니다. 많은 변수가 있지만 한 번 더 가져 가야합니다. 내 PDF에 query_naissance.

이것은 내 첫 번째 함수입니다 :

@login_required 
def Table_annuelle_BirthCertificate(request) : 

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

그리고 내 두 번째 기능은 보이는 같은 : 내 두 번째로 내 첫 번째 함수에서 사용자에 의해 주어진 query_naissance을 추가 할 수있는 방법 그래서

@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 

한 번 더 쓰지 않고 필드 하나?

그런 다음이 HTML 템플릿에 {{ query_naissance }}과 같은 변수를 호출해야합니다.

고맙습니다.

+0

이러한보기는 두 가지 다른 요청으로 호출됩니다. 따라서 두 번째보기로 사용자를 보내는 링크에 적절한 쿼리 문자열을 추가하거나 세션에 값을 저장하십시오. – schwobaseggl

+0

좋아요. 세션에서 값 저장에 대해 조사하고 있습니다. – Deadpool

+2

''django.contrib.sessions.middleware.SessionMiddleware ','가 필요하다.''django.contrib.sessions.middleware.SessionMiddleware' '가 필요하다. 귀하의 'MIDDLEWARE_CLASSES'. – schwobaseggl

답변

2

요청간에 정보를 유지하려면 세션을 사용하십시오. 장고는 아주 좋은 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) 

당신은 당신의 MIDDLEWARE_CLASSES에서 'django.contrib.sessions.middleware.SessionMiddleware'이 필요합니다.