在视图函数之间传递Django变量

Ess*_*sex 0 python django

我在Django应用程序视图中询问有关变量处理的问题.

我有2个功能:

  • 第一个让我进入display query result一个数组GET filter parameter(在我的例子中,用户写年份和Django根据今年返回所有对象.我们将调用query_naissance此变量).

  • 第二个让我创建一个PDF.我有很多变量,但我想再花一些时间query_naissance在我的PDF中.

这是我的第一个功能:

@login_required
def Table_annuelle_BirthCertificate(request) :

    query_naissance = request.GET.get('q1')
    ...
    return render(request, 'annuel.html', context)
Run Code Online (Sandbox Code Playgroud)

我的第二个功能看起来像:

@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
Run Code Online (Sandbox Code Playgroud)

那么如何query_naissance在我的第一个函数中添加用户给出的第二个函数而不再写一个字段?

然后,我必须{{ query_naissance }}在我的HTML模板中调用此变量.

谢谢

sch*_*ggl 5

为了在请求之间保留信息,您可以使用会话.Django有非常好的会话支持:

# 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)
Run Code Online (Sandbox Code Playgroud)

你需要'django.contrib.sessions.middleware.SessionMiddleware'在你的MIDDLEWARE_CLASSES.