0

有两种观点

视图.py

def followup(request):
    ''''''
     marklist = report_template(request)
     return render(request, 'incident/followup.html',{'somevar':somevar})

def report_template(request):
    '''''
    report=Report.objects.filter(report=report_id)
     ''''''
    return render(request, 'incident/print.html',
        {'report':report})

我在另一个方法中调用一个方法。将 report_template 方法调用到后续方法中。后续方法也有要在模板中呈现的变量。

如何将 report_template 方法的变量传递给后续方法并使其显示在模板中。

谢谢

4

2 回答 2

1

实现此目的的一种方法是创建一个帮助方法,该方法返回这report两种方法所需的上下文或上下文。这里的问题是你正在返回一个HTTPResponse对象,在这里使用辅助方法是最干净的:

def get_report(request):
    report=Report.objects.filter(report=report_id)
    #do more processing here.
    #returning a dict is probably safest here, because, in the calling method, `.get()` would not throw an error if key is not present. 
    return {'report': report, 'somevar': somevar}

def followup(request):
     marklist = get_report(request).get('somevar')
     return render(request, 'incident/followup.html',{'somevar':marklist})

def report_template(request):
    report = get_report(request).get('report')
    return render(request, 'incident/print.html',
        {'report':report})
于 2013-07-17T13:58:44.837 回答
0

您不能对视图执行此操作,您必须查找模板标签,这是在 Django 中执行此操作的更好方法(视图接受 Request 参数并返回 HttpResponse 变量)。

请参阅https://docs.djangoproject.com/en/dev/howto/custom-template-tags/

通过考虑您在视图中所做的事情,使用模板标签可以使您的代码可重用。

于 2013-07-17T13:58:25.867 回答