2017-01-02 74 views
-1

我的模板正在輸出以下內容。它沒有拉任何查詢值,但page loads finedoesnt fail,但它沒有顯示任何values在燒瓶模板中訪問這些字典值

我在mysqlmonitor中檢查了query,並且它按照它應該拉的3條記錄。

<li><a href="http://blog.mysite.com/wordpress///"></a></li> 

templates/index.html我:

{% for blogpost in blogposts %} 
     <li><a href="http://blog.mysite.com/wordpress/{{blogpost[2]}}/{{blogpost[3]}}/{{blogpost[1]}}">{{blogpost[0]}}</a></li> 
    {% else %} 
     <li>no blog posts right now...</li> 
    {% endfor %} 

app.py有這樣的:

import pymysql.cursors 
app = Flask(__name__) 
connection = pymysql.connect(host='localhost', user='myuser', port=3306, password='mypass', db='mydb', charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor) 

@app.route('/', methods=('GET', 'POST')) 
def email(): 
    form = EmailForm() 

    curs = connection.cursor() 

    curs.execute("SELECT post_title, post_name, YEAR(post_date) as YEAR, MONTH(post_date) as MONTH FROM mydb.wp_posts WHERE post_status='publish' ORDER BY RAND() LIMIT 3") 


    blogposts = curs.fetchall() 
    if request.method == 'POST': 
     return render_template('index.html', form=form, blogposts=blogposts) 
if __name__ == '__main__': 
    app.run() 

UPDATE我覺得我for()無法正常工作,因爲當我在更新template我得到的所有數據如:

[{u'MONTH': 12, u'YEAR': 2016, u'post_name': u'data is here', u'post_title': u'data is here'}, 
{u'MONTH': 12, u'YEAR': 2016, u'post_name': u'data is here', u'post_title': u"data is here"}] 

如何我在燒瓶template訪問這些數據?

非常感謝!

回答

2

試着找出發送給模板的內容。將print(blogposts)添加到電子郵件功能 - 在if request.method == 'POST':行的下方,看看它提供了哪些信息。

如果blogposts是一個詞典列表,那麼你不能通過編號訪問它們。您需要使用密鑰的名稱。例如,您需要將blogpost[0]更改爲blogpost['name']。藉助Flask的模板,您還可以使用點符號,因此博客的名稱將變爲blogpost.name