Как я могу запустить функцию внутри Views.py и результата печати?- Джанго - PullRequest
0 голосов
/ 07 марта 2019

Проблема в том, что я пытаюсь вызвать функцию из моего 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 голосов
/ 07 марта 2019

Вы вызываете функцию в представлении. Чтобы вызвать его в шаблоне, присвойте объект функции, а не результат вызова функции:

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

Затем вы можете вызвать функцию либо в представлении, либо в шаблоне.

...