2016-05-28 31 views
0

我正在Flask應用程序中工作,並且正在嘗試設置它來創建基於SQL數據庫中數據的動態網頁。舉例來說,如果我們湊關於某些犯罪的數據,我想瓶路由我的要求,這樣我可以鍵入:查詢Flask應用程序中保存的SQL數據庫時遇到的問題 - 當我與數據庫交互時返回數據時,Flask返回「None」

myflaskapp.com/criminal/[criminal's名]/

和被帶到一個頁面專門爲那個罪犯。這是我已經寫了views.py的相關部分:

@app.route('/criminal/<first_name>') 
def criminal(first_name): 
    criminal = Individual_Criminal.query.filter_by(first_name=first_name).first() 
    return render_template('user.html', 
          criminal=criminal) 

現在,當我打電話Individual_Criminal.query.filter_by(first_name=first_name).first()在Python外殼,它返回預期:example

然而,當我成立我的Flask服務器,並做(我相信是)完全相同的命令查詢,它只是給了我一個空白頁面(與我的導航欄和東西從基本html擴展。)

頁面的HTML我' m試圖打電話很簡單:

<!-- extend base layout --> 
{% extends "base.html" %} 

{% block content %} 
    <h1>{{ criminal.full_name }}</h1> 
    <hr> 
{% endblock %} 

正如您所看到的,它應該返回特定犯罪的全名(在本例中爲Bryan Sanford)。相反,它返回這個: example2

而不是所請求的犯罪的全名,HTML指定的方式。

我在哪裏錯了?我的想法是,如果我可以在我的views.py文件中執行確切的查詢,並讓它返回正確的值,它應該在我的Flask應用程序中工作。但是,顯然有一些電線穿過某處。你們中的任何一個人都可以幫我解開這個問題嗎?

編輯:正如在其中一個答案評論中所討論的,當我將views.py更改爲包含print(criminal.first_name)時,它失敗,投擲AttributeError: 'NoneType' object has no attribute 'first_name'。即使完全相同的線路與實際數據庫中的預期完全相同! enter image description here

回答

1

你的路由似乎是錯誤的?

這是不一樣的

myflaskapp.com/[criminal's name]/ 

@app.route('/criminal/<first_name>') 

嘗試

myflaskapp.com/criminal/[criminal's name]/ 
+0

啊,很想爲它是那麼容易修復,但是這是一個錯誤,我格式化。現在修復。雖然謝謝! – n1c9

+0

好的。你有沒有試圖在刑事功能中打印你的first_name變量?看看論證是否正確。在控制檯上你應該看到名字。 – no11

+0

hm。拋出'AttributeError:'NoneType'對象沒有屬性'first_name''。爲什麼它會在flask應用程序中返回NoneType,而不是在實際的SQL數據庫中? – n1c9

相關問題