Как я могу использовать внешний встроенный файл HTML для ссылки на внутренний маршрут flask? - PullRequest
0 голосов
/ 28 февраля 2020

У меня очень конкретный c вопрос относительно flask.

Итак, история в том, что я создал линейчатую гистограмму и встроил ее в шаблон html flask (/ template). Диаграмма находится в / static / figures /. Я хотел, чтобы график был интерактивным, чтобы при нажатии на столбец графика он перенаправлял меня на другую страницу в приложении flask. Я попытался связать это с внешней сетью (et c. www.google.com), и это работает. Но когда я попробовал <a href ="{{url_for(home}}", это выдает мне ошибку. Есть какой-либо способ сделать это? или мне действительно нужно создать таблицу и гистограмму с нуля, используя html css? Любой вклад будет высоко ценится! Вот фрагменты кода:

Установка ссылки вручную:

table = pd.DataFrame(columns=['brand','asin','bbcurrent','bbprior','bbvar','selcurrent','selprior','selvar','violcurrent','violprior','violvar','salescurrent','salesprior','salesvar','unitcurrent','unitprior','unitvar','pricecurrent','priceprior','pricevar'])
 table = table.append({'brand':brand,'asin':'''<a href="{{ url_for('home') }}">'''+asin+'''</a>''',
                                  'bbcurrent':nsc.as_percentage(bbcurrent),'bbprior':nsc.as_percentage(bbprior),'bbvar':bbvar,
                                  'selcurrent':selcurrent,'selprior':selprior,'selvar':selvar,
                                  'violcurrent':violcurrent,'violprior':violprior,'violvar':violvar,
                                  'salescurrent':nsc.as_currency(salescurrent),'salesprior':nsc.as_currency(salesprior),'salesvar':salesvar,
                                  'unitcurrent':nsc.as_commas(unitcurrent),'unitprior':nsc.as_commas(unitprior),'unitvar':unitvar,
                                  'pricecurrent':nsc.as_currency(pricecurrent),'priceprior':nsc.as_currency(priceprior),'pricevar':pricevar},ignore_index=True)

создание графика:

fig.add_trace(go.Table(
                   columnwidth = [90,100,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60],
                    header=dict(values=[['','<b> Brand </b>'],
                                        ['','<b>ASIN</b>'],
                                        ['Buy Box %','Current'],
                                        ['','Prior'],
                                        ['','Var'],
                                        ['Seller Violations','Current'],
                                        ['','Prior'],
                                        ['','Var'],
                                        ['Number of Violations','Current'],
                                        ['','Prior'],
                                        ['','Var'],
                                        ['Lost Sales','Current'],
                                        ['','Prior'],
                                        ['','Var'],
                                        ['Seller Inventory (units)','Current'],
                                        ['','Prior'],
                                        ['','Var'],
                                        ['Seller Inventory ($) ','Current'],
                                        ['','Prior'],
                                        ['','Var']],align="left",font=dict(family="Arial",size=12),fill_color='#F9F9FF'),
                    cells=dict(values = [table.brand,table.asin
                                         ,table.bbcurrent,table.bbprior,table.bbvar,
                                         table.selcurrent,table.selprior,table.selvar,
                                         table.violcurrent,table.violprior,table.violvar,
                                         table.salescurrent,table.salesprior,table.salesvar,
                                         table.unitcurrent,table.unitprior,table.unitvar,
                                         table.pricecurrent,table.priceprior,table.pricevar],fill = dict(color=[['rgba(171, 248, 195, 0.49)' if row['asin'] == colored else '#EBF0F8'  for index , row in table.iterrows()] ])
                                                                                           ,align="left",font=dict(family="Arial"))),row=1,col=1)

экспорт графика:

fig.write_html('test1.html', config={ "displayModeBar" : False} )

Настройка маршрута и доставка пи c до html:

@app.route('/test', methods=['GET', 'POST'])
@login_required
def test():
   figtest = gp.productviolationgraph(currdflandschour ,prevdflandschour,currsellersales,currsellersales,"B07S5XZDR9",0)

   return render_template('seller.html',testsellerviolation = figtest)

, наконец, рендеринг в продавце. html:

<embed style= " margin-top:-20px; margin-right:20px; width:100%; height:70vh; overflow:hidden;"  src={{testsellerviolation}}>

График рендеринга красиво внутри flask но ссылка не работает. Я предполагаю, что это потому, что он находится внутри папки stati c, что он не сможет перенаправить в приложение. есть ли какое-то решение для этого?

Заранее большое спасибо Stack Overflowers! :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...