python3+flask 開發web(一) - 新聞資(zī)訊 - 雲南小程序開發|雲南軟件開發|雲南網站(zhàn)建設-西山區知普網絡科技工作室

159-8711-8523

雲南網建設/小程序開發/軟件開發

知識

不管是網站(zhàn),軟件還是小程序,都要直接或間接能為您産生價值,我們在追求其視覺表現的同時,更側重于功能的便捷,營銷的便利,運營的高效,讓網站(zhàn)成為營銷工具,讓軟件能切實提升企業(yè)内部管理水平和(hé)效率。優秀的程序為後期升級提供便捷的支持!

您當前位置>首頁 » 新聞資(zī)訊 » 網站(zhàn)建設 >

python3+flask 開發web(一)

發表時間:2018-10-25

發布人:葵宇科技

浏覽次數:47

1、環境準備

1)安裝Python:https://www.python.org/

2)安裝python ide,pycharm:https://www.jetbrains.com/pycharm/

3)安裝flask:安裝好了python,電腦就自動(dòng)安裝了pip,在cmd中(zhōng)執行命令:pip install flask

2、寫代碼:

1)helloword:

from flask import Flask
app = Flask(__name__)     #創建一個(gè)wsgi應用

@app.route('/')           #添加路(lù)由:根
def hello_world():
    return 'Hello World!' #輸出一個(gè)字符串

if __name__ == '__main__':
    app.run(debug=True)             #啟動(dòng)app的調試模式


?

執行後:

在浏覽器(qì)的地址欄打開:http://127.0.0.1:50000/這個(gè)url,顯示如(rú)下(xià):

本例中(zhōng)app是Flask類的一個(gè)實例,在實例化過程中(zhōng)傳遞了一個(gè)參數name,Flask通(tōng)過這個(gè)參數識别app是模塊級别還是包級别的。實際上app符合相關(guān)接口,它是一個(gè)WSGI應用。

有了app對象以後,它就成為了一個(gè)中(zhōng)心節點,把所有的URL規則、視圖函數、模闆配置等連接起來,最終形成一個(gè)Web應用。

使用@app.route修飾函數創建一個(gè)URL規則,直接在被修飾的函數中(zhōng)寫出處理該URL要做的事情。使用過PHP、ASP的童鞋可(kě)能剛開始不習慣這種URL命名規則,因為最早使用腳本開發Web應用的時候,一個(gè)文(wén)件就會對應一個(gè)URL。
2)字符串

?
from flask import Flask


app=Flask(__name__)


@app.route('/')
def hello_word():
    return '<h1>Hello Word!</h1>'

if __name__=='__main__':
    app.run(debug=True)

?

執行結果:

3)json

?
?
?
from flask import Flask
import json



app=Flask(__name__)


@app.route('/json')
def do_json():
    hello = {"name":"stranger", "say":"hello"}
    return json.dumps(hello)


if __name__=='__main__':
    app.run(debug=True)

?

?

?

執行結果;

4)http狀态碼:

?
?
?
?
from flask import Flask
import json



app=Flask(__name__)


@app.route('/status_500')
def status_500():
    return "hello", 500



if __name__=='__main__':
    app.run(debug=True)

?

?

?

?

執行結果:

5)http頭:

from flask import Flask
from flask import make_response



app=Flask(__name__)

@app.route('/set_header')
def set_header():
    resp=make_response('<h1>This document has a modified header!</h1>')
    resp.headers['X-Something']='A value'
    resp.headers['Server']='My special http server'
    return resp




if __name__=='__main__':
    app.run(debug=True)

?

?

?

?

?

執行結果:

6)cookie:

什麼是cookie:

什麼是cookie?如(rú)果單單從數據結構的角度來說,它可(kě)以被理解成用來保存數據的一個(gè)dictionary,由一組組鍵值對組成.如(rú)果從作用上來說,我們知道Http協議是一種無狀态的協議.什麼叫無狀态呢(ne),就是本次的客戶端請求不會保留上一次客戶端請求的狀态,簡單點說就是這樣會要求我們每次在浏覽器(qì)中(zhōng)點開一個(gè)網站(zhàn)的鍊接都會輸一次賬戶和(hé)密碼.cookie就是用來解決這個(gè)問(wèn)題的.

為了解決上述問(wèn)題,我們第一次登錄web服務器(qì),服務端就會在它的響應中(zhōng)的Set-Cookie字段中(zhōng)發送一些鍵值對,這就包括一個(gè)Session ID以及其他一些信息(也包括我們自定義的cookie中(zhōng)的鍵值對),并告訴客戶端在本地緩存這個(gè)cookie.然後客戶端以後進行鍊接時每次都會發送這個(gè)Session ID,服務器(qì)一看是哪個(gè)Session ID就知道是哪個(gè)客戶端發起的鍊接了,就不會要求我們再次輸賬戶和(hé)密碼驗證了.

我們在flask中(zhōng)自定義cookie,實際上就是在響應Response的Set-Cookie字段中(zhōng)增加我們自定義的鍵值對.而獲取cookie,就是通(tōng)過請求Request中(zhōng)通(tōng)過鍵獲取其對應的值.

(1)設置cookie和(hé)獲取cookie

from flask import Flask
from flask import make_response
import datetime
from flask import request

app=Flask(__name__)

@app.route('/set_cookie') #設置cookie
def set_cookie():
    response=make_response('<h1>This document carries a cookie!</h1>')
    outdate=datetime.datetime.today()+datetime.timedelta(days=30)  #cookie的有效時長30天
    response.set_cookie('username','evancss',expires=outdate)
    return response

@app.route('/get_cookie')    #獲取cookie
def get_cookie():
    name=request.cookies.get('username')
    return name

if __name__=='__main__':
    app.run(debug=True)

執行結果:

set_cookie

get_cookie

注意cookie的時效性:我們在浏覽器(qì)上設置cookie的有效時長優先級要高于我們在代碼中(zhōng)設置的

(2)删除cookie常用的方法:

1可(kě)以通(tōng)過在浏覽器(qì)中(zhōng)設置來清除cookie.

2使用Response的set_cookie進行清除

@app.route('/del_cookie')
def del_cookie():
    response=make_response('delete cookie')
    response.set_cookie('username','',expires=0)
    return response

3使用Response的 delete_cookie方法.

def del_cookie2():
    response=make_response('delete cookie2')
    response.delete_cookie('username')
    return response

7)重定向:

?
?
?
from flask import Flask
from flask import redirect



app=Flask(__name__)


@app.route('/redir')
def redir():
    return redirect('https://www.baidu.com')




if __name__=='__main__':
    app.run(debug=True)
?

?

?

?

執行結果:

用fiddler抓包看看:

8)abort:

?
?
?
from flask import Flask
from flask import abort



app=Flask(__name__)


@app.route('/user/<id>')
def get_user(id):
    if int(id)>10:
        abort(404)
    return '<h1>Hello,%s</h1>'%id




if __name__=='__main__':
    app.run(debug=True)
?

?

?

?

執行結果:

id=22

id=2

遇到的問(wèn)題:新建項目的選擇解釋器(qì)和(hé)location的時候注意一下(xià)

參考博文(wén):https://blog.csdn.net/langkew/article/details/51594880

相關(guān)案例查看更多