重新撿起flask(六)

2022-08-03 08:42:14 字數 1927 閱讀 8881

其實到這裡來說,我發現狗書一些沒太講清楚的事情了,當然看著之前的筆記,其實我也知道自己以前也發現了一些問題。

由於我們大部分都是在用拓展包,其實拓展包為我們做了一些什麼事情其實我是完全不知道的。

比如現在我們重點來看一下我們test函式。

/test

", methods=['

get', '

post'])

deftest():

form =nameform()

ifform.validate_on_submit():

session[

"name

"] =form.name.data

redirect(url_for(

"test"))

return render_template("

test.html

", form=form, name=session.get("

name

"))乙個需要說到的點是,什麼時候瀏覽器會傳送post請求,什麼時候會傳送get請求,我們後台是否知道?

單純從上面這段**我們是不知道的。

我們只能猜測在jinja2模板裡面的submit按鈕會觸發post請求,如果只是開啟**,會傳送get請求。

我們是否能指定submit按鈕,按下以後也傳送get請求呢?我們現在不知道。

暫且就按上面的理解來繼續吧。

然後,我們現在主要是解決乙個重新整理頁面,瀏覽器會重複提交上一次請求的情況,當是post請求的話,瀏覽器會不厭其煩的告警。

瀏覽器是瀏覽器的事,我們只能靠我們的後台來做處理了。

那其實就像我們上面的所說的一樣,我們應該是要處理上面那個東東,我要讓按下submit的請求變成乙個get請求,狗書中的redirect其實也是get請求啦。

狗書上是怎麼做的,他直接改成上面的**就實現了。

我一臉蒙蔽,不應該是改前端的**麼?

改後台這麼騷的思路也可以做?

這裡我真的不是特別理解。

但是,也要試圖去理解一下。

我們沒改前端,那麼說明乙個東東,按下submit按鈕後,確實還是發了乙個post請求過來(google瀏覽器開發者模式是不是可以驗證這個說法?)。

後台收到這個post請求後,強制讓客戶端再發乙個get請求過來。這樣導致,按下按鈕後,實際的最後效果,是最後傳送了乙個get請求。

這個思路確實騷。

不像我,傻乎乎的就像去改造前端按鈕傳送的請求。

再來看看上面這段**,好像沒起作用,坑吧,這麼精闢的思路翻車了?

大家可以想想為什麼沒有生效?

因為什麼呢?因為我漏了乙個return。

其實完整的應該是這樣的。

/test

", methods=['

get', '

post'])

deftest():

form =nameform()

ifform.validate_on_submit():

session[

"name

"] =form.name.data

return redirect(url_for("

test"))

return render_template("

test.html

", form=form, name=session.get("

name

"))這樣繼續讓我懷疑之前的一些假設。

假設我剛剛的假定是對的話,好像會有些問題。

我按下按鈕觸發post請求給後台,後台看到你這個東東,**裡面有東西,好,我就給你重定向一下。然後再返回給你test.html。

這樣的話,其實最後請求也是get請求啊...

難道說前面想的是有問題的?

我們再來猜測吧,難道是這麼說?

我們雖說寫的是後台的**,其實並不完全只是後台。其實也有一部分前端的邏輯?

不太清楚,望高人指點...

重新撿起flask(七)

來到資料庫一章,我的心還是很矇的。雖說自己之前sql寫的666,但是你讓我建模我還真沒幹過啊!然後狗書裡用的還是sqlalchemy,用物件導向來理解資料庫,我選擇godie,我知道為什麼叫狗書了.開玩笑啦。不過說實話,是有些懵。因為你在這個框架裡呆的時間還很短,什麼都不知道,你不知道這個框架為你做...

重新撿起flask(五)

又想蹭點東西了.這裡主要是想來複習一下jinja2模板的一些內容。之前其實很快的過了jinja2裡面寫一些if或for控制語句的東西。真到現在想直接寫一些,卻有些忘了,如果你也忘了,我們一起來回憶一些吧。ouch 上面是默寫的,也不知道是不是對的。我仿著思路再寫一下for的吧。不記得有沒有while...

重新撿起flask(四)

中間乙個禮拜沒有看過flask了,今天重新撿起來,一切又開始陌生了。強迫自己看下去,也算是有了收穫。以前大概到這裡就開始沒有怎麼實際寫過 了,其實看書,和實際寫 還真是差的很遠。剛看了沒多久,由於自己現在是自己手敲,所以走了一些彎路,但這些彎路其實對於成長來說,還真是很有用的。這裡我舉個剛剛遇到的例...