我正在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外殼,它返回預期:
然而,當我成立我的Flask服務器,並做(我相信是)完全相同的命令查詢,它只是給了我一個空白頁面(與我的導航欄和東西從基本html擴展。)
頁面的HTML我' m試圖打電話很簡單:
<!-- extend base layout -->
{% extends "base.html" %}
{% block content %}
<h1>{{ criminal.full_name }}</h1>
<hr>
{% endblock %}
正如您所看到的,它應該返回特定犯罪的全名(在本例中爲Bryan Sanford)。相反,它返回這個:
而不是所請求的犯罪的全名,HTML指定的方式。
我在哪裏錯了?我的想法是,如果我可以在我的views.py
文件中執行確切的查詢,並讓它返回正確的值,它應該在我的Flask應用程序中工作。但是,顯然有一些電線穿過某處。你們中的任何一個人都可以幫我解開這個問題嗎?
編輯:正如在其中一個答案評論中所討論的,當我將views.py
更改爲包含print(criminal.first_name)
時,它失敗,投擲AttributeError: 'NoneType' object has no attribute 'first_name'
。即使完全相同的線路與實際數據庫中的預期完全相同!
啊,很想爲它是那麼容易修復,但是這是一個錯誤,我格式化。現在修復。雖然謝謝! – n1c9
好的。你有沒有試圖在刑事功能中打印你的first_name變量?看看論證是否正確。在控制檯上你應該看到名字。 – no11
hm。拋出'AttributeError:'NoneType'對象沒有屬性'first_name''。爲什麼它會在flask應用程序中返回NoneType,而不是在實際的SQL數據庫中? – n1c9