Flask框架學(xué)習(xí)之前后端交互(一)

前后端交互就是在網(wǎng)頁(yè)上點(diǎn)擊一個(gè)按鈕或者是提交一個(gè)表單近刘,怎么傳到后端熙尉,后端怎么傳到數(shù)據(jù)庫(kù)里药有,又怎么返回?cái)?shù)據(jù)到前端的問題毅戈。
這里簡(jiǎn)單分為以下幾類:

1.前端提交表單數(shù)據(jù)傳給后端,后端接收返回一個(gè)新頁(yè)面愤惰。

舉一個(gè)登陸界面的簡(jiǎn)單例子苇经,前端輸入賬號(hào)密碼,后端從數(shù)據(jù)庫(kù)取出數(shù)據(jù)進(jìn)行比對(duì)宦言,如果一致則轉(zhuǎn)向主頁(yè)面扇单,不一致則返回當(dāng)前頁(yè)面。
html代碼:

<form class="form-4" action="/main/" method="post">

                    <h1>Login</h1>
                    <p>
                        <label for="login">Username or email</label>
                        <input type="text" name="login" placeholder="NameId" required>
                    </p>
                    <p>
                        <label for="password">Password</label>
                        <input type="password" name='password' placeholder="Password" required> 
                    </p>
                    <p>
                        <input type="submit" name="submit" value="登陸" >
                    </p>       
</form>?

兩個(gè)輸入框蜡励,賬號(hào)和密碼令花,和一個(gè)提交的按鈕。
在form標(biāo)簽里面以post方式進(jìn)行提交凉倚,action里面的就是你點(diǎn)擊按鈕的時(shí)候要跳轉(zhuǎn)到的url兼都,這時(shí)候我們就要在app.py里面來(lái)定義這個(gè)路由了。

后端代碼:

@app.route('/main/', methods=['post'])
def yanzheng():
    nameid = request.form['login']
    ps = request.form['password']

    conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='123', db='ci', charset='utf8')
    cur = conn.cursor()
    sql = "SELECT `name`, `password` FROM `information` WHERE name_id =" + nameid
    cur.execute(sql)
    realps = cur.fetchall()
    conn.close()

    session.permanent = True  # 默認(rèn)session的時(shí)間持續(xù)31天
    session['name_id'] = nameid
    session['name_name'] = realps[0][0]
    if ps == realps[0][1] :
        return render_template('index.html')
    else:
        return render_template('login.html')

說明:
1.第一行單引號(hào)里面的 /main/ 這個(gè)路由和你上面html里面action里面一致稽寒,方法是post.

2.函數(shù)名隨便取扮碧,不過不要像我這樣不規(guī)范。

3.之后的2行是從form表單里接受的數(shù)據(jù),中括號(hào)里面的login,password是html標(biāo)簽里的name屬性慎王。

4.之后的6行是連接數(shù)據(jù)庫(kù)蚓土,根據(jù)name_id 從本地的 ci數(shù)據(jù)庫(kù)的 information表中取出來(lái) name 和 password兩項(xiàng),把值給realps這個(gè)元祖里面赖淤。此時(shí)realps=(('zhangsan','123'),)是一個(gè)二元數(shù)組蜀漆。

5.由于登陸一般都需要開啟會(huì)話session,簡(jiǎn)言之就是需要設(shè)置全局變量咱旱,

session['name_id'] = nameid
session['name_name'] = realps[0][0]

這就把這里接收到的nameid和數(shù)據(jù)庫(kù)中取出的'zhangsan'設(shè)置成了全局變量确丢,在其他@app.route()里面以如下方式調(diào)用全局變量:

@app.route('/sign_in',  methods=['post'])
def sign_in():
    name = session.get('name_name')
    name_id = session.get('name_id')

6.最后就是判斷了,如果密碼相等吐限,就轉(zhuǎn)向主頁(yè)面鲜侥,如果不相等則返回登陸頁(yè)面。

7.需要至少引入以下模塊(應(yīng)該不用這么多诸典,記不清了描函,不過其他地方應(yīng)該能用到......):

from flask import Flask,render_template,request,session
import pymysql
import time
import json
import os
from datetime import timedelta
import datetime

app = Flask(__name__)
app.config['SECRET_KEY'] = os.urandom(24)
app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=1)  # 設(shè)置session的保存時(shí)間。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末狐粱,一起剝皮案震驚了整個(gè)濱河市舀寓,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌脑奠,老刑警劉巖基公,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異宋欺,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)胰伍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門齿诞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人骂租,你說我怎么就攤上這事祷杈。” “怎么了渗饮?”我有些...
    開封第一講書人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵但汞,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我互站,道長(zhǎng)私蕾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任胡桃,我火速辦了婚禮踩叭,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己容贝,他們只是感情好自脯,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著斤富,像睡著了一般膏潮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上满力,一...
    開封第一講書人閱讀 51,182評(píng)論 1 299
  • 那天焕参,我揣著相機(jī)與錄音,去河邊找鬼脚囊。 笑死龟糕,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的悔耘。 我是一名探鬼主播讲岁,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼衬以!你這毒婦竟也來(lái)了缓艳?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤看峻,失蹤者是張志新(化名)和其女友劉穎阶淘,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體互妓,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡溪窒,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了冯勉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片澈蚌。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖灼狰,靈堂內(nèi)的尸體忽然破棺而出宛瞄,到底是詐尸還是另有隱情,我是刑警寧澤交胚,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布份汗,位于F島的核電站,受9級(jí)特大地震影響蝴簇,放射性物質(zhì)發(fā)生泄漏杯活。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一军熏、第九天 我趴在偏房一處隱蔽的房頂上張望轩猩。 院中可真熱鬧,春花似錦、人聲如沸均践。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)彤委。三九已至鞭铆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間焦影,已是汗流浹背车遂。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留斯辰,地道東北人舶担。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像彬呻,于是被迫代替她去往敵國(guó)和親衣陶。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353