如何在Views.py中运行函数并打印结果? -Django

时间:2019-03-06 23:30:14

标签: python django django-views

问题是我试图从views.py调用一个函数,并通过上下文变量将结果打印到模板中。该功能在终端上打印,在模板中不起作用。几天前,我发布了一个关于使用子流程执行此操作的问题,但我仍然无法弄清楚。

如何在模板而不是终端中打印“这是AAPL的测试功能”?

Views.py

from django.shortcuts import render  
from backtests.scripts import Backtests

def index(request):

    if 'symbol' in request.GET:
        symbol = request.GET.get('symbol','Invalid Symbol')
        request.session['symbol'] = symbol
    else:
        symbol = request.session['symbol']


    earnings_object = Backtests("AAPL")
    test = earnings_object.print_discrep()


    return render(request, 'backtests/earnings.html', {'symbol':symbol, 'test':test})

scripts.py

class Backtests:

    def __init__(self, symbol):
        self.symbol = symbol

    def print_discrep(self):
        print('This is a test function for the graph ' + self.symbol)
  

它在我的模板中返回None。

1 个答案:

答案 0 :(得分:0)

您正在视图中调用该函数。要在模板中调用它,请分配函数对象,而不是函数调用的结果:

test = earnings_object.print_discrep  # no ()

更新: print打印到命令行,而不打印到模板。

该模板显示您调用的函数的返回值。您的print_discrep没有返回值,默认为None

如果要在模板中显示数据,请在函数中返回该数据:

def get_discrep(self):
    return 'This is a test function for the graph ' + self.symbol

然后,您可以在视图或模板中调用该函数。