从方法内部的方法调用变量

时间:2013-07-17 13:51:50

标签: django django-models django-forms django-templates django-views

有两个观点

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方法的变量传递给后续方法并使其显示在模板中。

由于

2 个答案:

答案 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可以通过分析您在视图中执行的操作来重复使用代码。