2017-02-16 17 views
0

Я начинаю с фляжки, и, честно говоря, я добрался до головы ударов по столовой части обучения.Динамически определяющий маршрут колбы и импорт данных

Я был в состоянии успешно использовать флягу, чтобы создать несколько маршрутов, но когда я пытаюсь создавать их динамически Я постоянно получаю ошибку утверждения: «AssertionError: Просмотр функции отображения перезаписи существующей функции конечной точки: j_show_html»

Чтобы обойти это, я попытался динамически создавать функции python (что кажется плохой идеей). Что является лучшим способом динамического создания этих страниц на основе даты?

Вот мой питон скрипт:

from flask import render_template, Flask 
import pandas 
from pandas.tseries.holiday import USFederalHolidayCalendar 
from datetime import timedelta, datetime 

app = Flask(__name__) 
out_IP_address = "0.0.0.0" 
out_port = 5000 

fileLoc = "C:/" 
fileName = "Rand_QA_Calls" 
start_date = "2017-01-01" 
out_date = [] 
cal = USFederalHolidayCalendar() 
holidays = cal.holidays(start='2017-01-01', end='2017-12-31').to_pydatetime() 

for i in range(0,365): 
    temp_date = datetime.strptime(start_date,"%Y-%m-%d") + timedelta(days=i) 
    code = """ 
    def {0}(): 
     report = pandas.read_excel('{1}'+"/"+'{2}'+"_"+'{3}'+"_"+'{3}'+".xlsx") 
     return render_template('view.html', 
     tables=[report.to_html(index=False)])""".format("j_show_html_"+str(i),fileLoc,fileName,temp_date.strftime("%Y%m%d")) 
    print(code) 
    @app.route("/"+temp_date.strftime("%Y%m%d")) 
    exec(eval(code)) 

if __name__ == "__main__": 
    app.run(host=out_IP_address,port=out_port,debug=True) 

А вот мой HTML (используя jinja2):

<!doctype html> 
<title>Simple tables</title> 
<link rel=stylesheet type=text/css href="{{ url_for('static', filename='style.css') }}"> 
<div class=page> 
    <h1>Rand_QA_Calls</h1> 
    {% for table in tables %} 
    <h2>{{titles[loop.index]}}</h2> 
    {{ table|safe }} 
    {% endfor %} 
</div> 

И, наконец, здесь это CSS:

body   { font-family: "Lucida Sans Unicode", "Lucida Grande", sans-serif;} 
a, h1, h2  { color: #377ba8; } 
h1, h2   { margin: 0; } 
h1    { border-bottom: 2px solid #eee; } 
h2    { font-size: 1.2em; } 

table.dataframe, .dataframe th, .dataframe td { 
    border: none; 
    border-bottom: 1px solid #C8C8C8; 
    border-collapse: collapse; 
    text-align:left; 
    padding: 10px; 
    margin-bottom: 40px; 
    font-size: 0.9em; 
} 

tr:nth-child(odd)  { background-color:#eee; } 
tr:nth-child(even) { background-color:#fff; } 

tr:hover   { background-color: #ffff99;} 

ответ

0

я понял это из. Я не пропускал переменную по маршруту, но это делало это намного проще.

from flask import render_template, Flask 
import pandas 
from pandas.tseries.holiday import USFederalHolidayCalendar 
#from datetime import datetime, timedelta 
import urllib2 

app = Flask(__name__) 
out_IP_address = "0.0.0.0" 
out_port = 5000 

fileLoc = "C:/" 
fileName = "Rand_QA_Calls" 
start_date = "2017-01-01" 
out_date = [] 
cal = USFederalHolidayCalendar() 
holidays = cal.holidays(start='2017-01-01', end='2017-12-31').to_pydatetime() 

@app.route("/tables/") 
@app.route("/tables/<date>") 
def j_show_html(date): 
    report = pandas.read_excel(fileLoc+"/"+fileName+"_"+date+"_"+date+".xlsx") 
    return render_template('view.html', 
    tables=[report.to_html(index=False)], 
    titles = ['na'], 
    labels = urllib2.unquote(date.encode('ascii','ignore'))) 

if __name__ == "__main__": 
    app.run(host=out_IP_address,port=out_port,debug=True) 

 Смежные вопросы

  • Нет связанных вопросов^_^