有两个观点
views.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方法调用到followup方法中.followup方法也有变量在模板中呈现。
如何将report_template方法的变量传递给后续方法并使其显示在模板中。
由于
答案 0 :(得分:1)
实现此目的的一种方法是创建一个辅助方法,该方法返回report
或两个方法所需的上下文。这里的问题是你返回一个HTTPResponse
对象,这里使用helper方法最简洁:
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})
答案 1 :(得分:0)
您无法使用视图执行此操作,您必须查找模板标记,这是在Django中更好的方法(视图接受Request参数并返回HttpResponse变量)。
请参阅https://docs.djangoproject.com/en/dev/howto/custom-template-tags/。
使用templatetags可以通过分析您在视图中执行的操作来重复使用代码。