Вызов функции из функции запроса в представлениях Django - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть простой html шаблон со ссылкой, который запускает скрипт, в представлениях, которые извлекают данные на страницу, в файле представлений у меня есть две функции: функция визуализации def output(request): (она извлекает данные на страницу) и другая функция. def summoner():, который заставляет postgres зацикливаться и добавляет результаты в список. Отдельно каждый из них работает нормально, но мне нужно вызвать вторую функцию из функции рендеринга и извлечь данные на страницу, но теперь, когда я это делаю, я получаю только пустой список. введите описание изображения здесь

шаблон:

    <html>
    <head>
        <title>
            Python  script
        </title>
    </head>
    <body>
        <a href="{% url 'script' %}">Execute Script</a> <hr>
        {% if data %}


        {{ data }}


        {% endif %}

        </body>
</html>

просмотров:

from django.shortcuts import render
import pandas as pd
import psycopg2
import os, glob


conn = psycopg2.connect(host='127.0.0.1', database='db',
                        user='user', password='pass')
cur = conn.cursor()


def insert_data_as_is(file_name):
    cur.execute('truncate table test_inv.start_tbl')
    with open(file_name, 'r') as file:
        cur.execute("insert into test_inv.start_tbl values {0}".format(file.read()))
        conn.commit()


def insert_data_to_be(file_name):
    cur.execute('truncate table test_inv.res_calc_ratios_t')
    with open(file_name, 'r') as file:
        cur.execute('insert into test_inv.res_calc_ratios_t (test_no, test_name, hcode_id, '
                    'hcode_name, hcode_'
                    'unit_name,'
                    ' org_id, dor_kod, duch_id, nod_id, date_type_id, metric_type_id, cargo_type_id, val_type_id,'
                    ' unit_id, dt, value, ss, dir_id, kato_id, vids_id) values {0}'.format(file.read()))
        conn.commit()



path_start = 'files/csv_s/as_is/'
start_list = []
path_finish = 'files/csv_s/to_be'
finish_list = []
for infile in glob.glob(os.path.join(path_start, '*.*')):
    start_list.append(infile)
for infile in glob.glob(os.path.join(path_finish, '*.*')):
    finish_list.append(infile)


 def summoner():
    fun_sql_set = []
    fun_query = """select * from test_inv.test_ratios('1','15')"""
    for i in range(len(finish_list)):
        insert_data_as_is(start_list[i])
        insert_data_to_be(finish_list[i])
        results = pd.read_sql_query(fun_query, conn)
        fun_sql_set.append(results)
    return fun_sql_set



def index(request):
    return render(request,'calculus/index.html')



def output(request):
    data = summoner()
    print(data)
    return render(request,'calculus/index.html',{'data':data})

1 Ответ

0 голосов
/ 28 февраля 2020

Ответом является создание абсолютного пути к файлу:

cur_dir = os.path.dirname(os.path.abspath(__file__))
path_start = '{}/static/csv_s/as_is/'.format(cur_dir)
path_finish = '{}/static/csv_s/to_be/'.format(cur_dir)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...