知識
不管是網站,軟件還是小程序,都要直接或間接能為您產生價值,我們在追求其視覺表現的同時,更側重于功能的便捷,營銷的便利,運營的高效,讓網站成為營銷工具,讓軟件能切實提升企業(yè)內部管理水平和效率。優(yōu)秀的程序為后期升級提供便捷的支持!
python3+flask 開發(fā)web(一)
發(fā)表時間:2018-10-25
發(fā)布人:葵宇科技
瀏覽次數:74
1、環(huán)境準備
1)安裝Python:https://www.python.org/
2)安裝python ide,pycharm:https://www.jetbrains.com/pycharm/
3)安裝flask:安裝好了python,電腦就自動安裝了pip,在cmd中執(zhí)行命令:pip install flask
2、寫代碼:
1)helloword:
from flask import Flask
app = Flask(__name__) #創(chuàng)建一個wsgi應用
@app.route('/') #添加路由:根
def hello_world():
return 'Hello World!' #輸出一個字符串
if __name__ == '__main__':
app.run(debug=True) #啟動app的調試模式
?
執(zhí)行后:
在瀏覽器的地址欄打開:http://127.0.0.1:50000/這個url,顯示如下:
本例中app是Flask類的一個實例,在實例化過程中傳遞了一個參數name,Flask通過這個參數識別app是模塊級別還是包級別的。實際上app符合相關接口,它是一個WSGI應用。
有了app對象以后,它就成為了一個中心節(jié)點,把所有的URL規(guī)則、視圖函數、模板配置等連接起來,最終形成一個Web應用。
使用@app.route修飾函數創(chuàng)建一個URL規(guī)則,直接在被修飾的函數中寫出處理該URL要做的事情。使用過PHP、ASP的童鞋可能剛開始不習慣這種URL命名規(guī)則,因為最早使用腳本開發(fā)Web應用的時候,一個文件就會對應一個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)
?
執(zhí)行結果:
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)
?
?
?
執(zhí)行結果;
4)http狀態(tài)碼:
?
?
?
?
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)
?
?
?
?
執(zhí)行結果:
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)
?
?
?
?
?
執(zhí)行結果:
6)cookie:
什么是cookie:
什么是cookie?如果單單從數據結構的角度來說,它可以被理解成用來保存數據的一個dictionary,由一組組鍵值對組成.如果從作用上來說,我們知道Http協(xié)議是一種無狀態(tài)的協(xié)議.什么叫無狀態(tài)呢,就是本次的客戶端請求不會保留上一次客戶端請求的狀態(tài),簡單點說就是這樣會要求我們每次在瀏覽器中點開一個網站的鏈接都會輸一次賬戶和密碼.cookie就是用來解決這個問題的.
為了解決上述問題,我們第一次登錄web服務器,服務端就會在它的響應中的Set-Cookie字段中發(fā)送一些鍵值對,這就包括一個Session ID以及其他一些信息(也包括我們自定義的cookie中的鍵值對),并告訴客戶端在本地緩存這個cookie.然后客戶端以后進行鏈接時每次都會發(fā)送這個Session ID,服務器一看是哪個Session ID就知道是哪個客戶端發(fā)起的鏈接了,就不會要求我們再次輸賬戶和密碼驗證了.
我們在flask中自定義cookie,實際上就是在響應Response的Set-Cookie字段中增加我們自定義的鍵值對.而獲取cookie,就是通過請求Request中通過鍵獲取其對應的值.
(1)設置cookie和獲取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)
執(zhí)行結果:
set_cookie
get_cookie
注意cookie的時效性:我們在瀏覽器上設置cookie的有效時長優(yōu)先級要高于我們在代碼中設置的
(2)刪除cookie常用的方法:
1可以通過在瀏覽器中設置來清除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)
?
?
?
?
執(zhí)行結果:
用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)
?
?
?
?
執(zhí)行結果:
id=22
id=2
遇到的問題:新建項目的選擇解釋器和location的時候注意一下
參考博文:https://blog.csdn.net/langkew/article/details/51594880