【发布时间】:2020-12-25 14:27:02
【问题描述】:
我正在尝试在我的烧瓶网页上显示字典中包含的值。我可以在终端上显示它,但我无法在网页上显示它。所以我的网页中有一个部分有一个图表,我试图在该图表上显示值。图表的 X 轴有特定的日期,而 Y 轴有一定的数值。 这是我的函数,它在我的终端上显示字典,但是在从我的 postgresQl 表中检索值时,它会引发错误。 我的函数
def stats(self, application):
'''
In this section
GET
Graph : for the last 30 days the number of request (stack bars) and as line
Tables: for each campaign the matrix with the winning for segment
POST
Add a new arm to the DLP (to every single bandit)2
'''
if request.method == 'POST':
new_url = request.form['site_url']
self.add_arm(new_url)
# table for each campaign
self.tables = {}
landing_req = Landing_request.query.all()
for rows in landing_req:
self.tables[rows.campaign_id] = rows.campaign_id
# Graph structure
self.graph = {}
lr = Landing_request.query.all()
for rows in lr:
self.graph[rows.id] = rows.id
application.logger.info(f'Campaign inside the system - {len(self.bandit_campaigns)}')
# for every campaign
for campaign in self.bandit_campaigns:
# Return the structure of the features
x_list = self.Feature_inst.x_feature_dict.items()
# Then I return the Improvement and the status of the single features
best_value, status_ele = self.bandit[campaign].return_status(x_list)
# application.logger.info(f'status_ele - {status_ele}')
status_ele_pure = {a: self._ranked_status(k) for a, k in status_ele.items()}
# for every device
for device in status_ele_pure.keys():
# for every page
for page in status_ele_pure[device].keys():
if campaign in self.pages.keys():
if page in self.pages[campaign][device].keys():
status_ele_pure[device][page]['impressions'] = self.pages[campaign][device][page][
'impressions']
status_ele_pure[device][page]['conversions'] = self.pages[campaign][device][page][
'conversions']
status_ele_pure[device][page]['rate'] = self.pages[campaign][device][page]['rate']
else:
status_ele_pure[device][page]['impressions'] = 0
status_ele_pure[device][page]['conversions'] = 0
status_ele_pure[device][page]['rate'] = 0
else:
status_ele_pure[device][page]['impressions'] = 0
status_ele_pure[device][page]['conversions'] = 0
status_ele_pure[device][page]['rate'] = 0
# I will save the best and the matrix
self.tables[campaign] = status_ele_pure
today = datetime.datetime.now()
# for all the campaign
for campaign_id in self.bandit_campaigns:
if campaign_id not in self.graph.keys():
# Graph
self.graph[campaign_id] = {}
# I print the last 30 days data
for i_day in range(30):
# Select the day id
eventid_i = (today - timedelta(days=i_day)).strftime('%Y%m%d')
# If it's not there I initialize the system
if eventid_i not in self.graph[campaign_id].keys():
self.graph[campaign_id][eventid_i] = {}
# If there is the data
if eventid_i in self.selection[campaign_id].keys():
self.graph[campaign_id][eventid_i] = self.selection[campaign_id][eventid_i]
else:
self.graph[campaign_id][eventid_i] = None
application.logger.info(f'selection - {self.selection}')
application.logger.info(f'graph - {self.graph}')
application.logger.info(f'tables - {self.tables}')
这里是html部分
<tbody>
{% for key,value in tables.items() %}
<tr>
<td class="element">{{key}}</td>
<td class="element">
{% for key_page,value in value[0].items() %}
<div class="box">
<div>Page {{structure[key_page]}}</div>
<div>Rank: {{value['rank']}} </div>
<div>Impressions: {{value['impressions']}} </div>
<div>Conversions: {{value['conversions']}} </div>
<div>Conversion rate: {{'%0.2f' % value['rate']|float}}%</div>
</div>
{% endfor %}
</td>
<td class="element">
{% for key_page,value in value[1].items() %}
<div class="box">
<div>Page {{structure[key_page]}}</div>
<div>Rank: {{value['rank']}} </div>
<div>Impressions: {{value['impressions']}} </div>
<div>Conversions: {{value['conversions']}} </div>
<div>Conversion rate: {{'%0.2f' % value['rate']|float}}%</div>
</div>
{% endfor %}
</td>
###rest of code
这会引发错误,例如:jinja2.exceptions.UndefinedError: str object has no element 0 我尝试了几种方法,但没有任何效果。 请帮帮我。谢谢!
【问题讨论】:
标签: python python-3.x dictionary flask jinja2