Expect Lai
INFOR35th Network Management
Yu-Chi Lai
沒有特定主題,我也快沒心思安排教什麼特別有料的了 QQ
會是由網路知識(理論)+實作(Flask、JS、LineBot?)而組成
入門
Text
熱門 (市佔率 77.6%)
易學易懂、學習曲線低
中小企業常用
語法嚴謹度低、複雜程序執行的頗爛
Django & Flask
暖身
名詞
網站為了辨別使用者身分而儲存在用戶端(Client Side)上的資料,使用Cookie能夠讓使用者在網路瀏覽上更加方便,但在網路隱私的方面來說Cookie危害了使用者的安全。
名詞介紹 – Cookie
Server 和 Client 不會一直保持連線狀態,無法取得雙方的狀態,所以使用了 Session,Session 就像是餐廳的號碼牌, Server 可以透過該號碼牌來認定 Client 的身分、是否點過餐、知道 Client 點了什麼東西,給予 Client 餐點。
名詞介紹 – Session
GET 和 POST 是兩種常見的 Http method,差別如下:
名詞介紹 – GET & POST
Uniform Resource Locator (統一資源定位器)
以 github.com/login 為例:
名詞介紹 – URL
https | github.com | login |
---|---|---|
協定 | 伺服器 | 路徑 |
GET 和 POST 是兩種常見的 Http method,差別如下:
名詞介紹 – GET & POST
比較進階 (? 的 Python Python 補救班
Python 擁有許多強大的模組,像是 numpy、pandas、os,而我們可以透過 import 的方式運用其中的函式庫。
import [module] (as [name]) | 引入模組 (取名作) |
---|---|
from [module] import [variable/function] | 從模組引入特定的函式 |
pip install [module] | 安裝套件 |
def printHello(func):
def wrapper():
print('Hello')
return func()
return wrapper
@printHello
def printWorld():
print('World')
printWorld()
printHello(printWorld())
def printHello(func):
def wrapper(arg):
print('Hello')
return func(arg)
return wrapper
@printHello
def printArg(arg):
print(arg)
printArg('INFOR 35th')
printArg('7122')
def printHello(func):
def wrapper(*args, **kwargs):
print('Hello')
return func(*args, **kwargs)
return wrapper
@printHello
def printSingle(arg):
print(arg)
@printHello
def printDouble(arg1, arg2):
print(arg1)
print(arg2)
printSingle('World')
printDouble('Koyori', 'cute')
*args 為一 list,指的是不論個數的輸入參數,**kwargs 為一 dict,指的是任何名字的參數
pip install pipenv
html 補完
<form action="資料傳送到哪裡" method="get/post">
表單內容
</form>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<form>
<input name="password" value="請輸入密碼" type="input">
</form>
</body>
</html>
一些與網路相關的知識
just something easy
DEBUG: 能幫助開發時簡化調整及重啟的過程,使開發效率提升 (?
from flask import Flask
app = Flask(__name__)
app.config.from_pyfile('configs.py')
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run()
# app.debug=True 也行
# configs.py
DEBUG = TRUE
from flask import Flask, render_template
app = Flask(__name__)
app.config["DEBUG"] = True
@app.route("/")
def index():
return render_template('index.html') # index page
@app.errorhandler(404) # errorhandler 中放置 status code
def page_not_found(error):
return 'This page does not exist QwQ', 404 # 錯誤回傳
if __name__ == "__main__":
app.run()
from flask import Flask, request, render_template
app = Flask(__name__)
app.config["DEBUG"] = True
@app.route('/')
def login():
return render_template('login.html')
@app.route("/hello", methods=['GET', 'POST'])
def hello():
if request.method == 'GET':
return 'Hello' + request.args['username']
if __name__ == '__main__':
app.run()
# login.html
<form method="get" action={{ url_for('user') }}>
<input type="text" name="username">
<input type="submit" value="input">
</form>
request 取得特定元素
使用 get 和使用 post
網址列會出現什麼差異?
from flask import Flask, make_response
app = Flask(__name__)
app.config.from_pyfile('configs.py')
@app.route('/cookie')
def set_cookie():
res = make_response('Yummy cookies')
res.set_cookie(key='flavor',value='chocolate')
return res
@app.route('/get')
def get():
get_cookie = request.cookies.get('flavor')
return get_cookie
@app.route('/del')
def de():
res = make_response('Cookies vanished')
res.set_cookie(key='flavor',value='',expires=0)
return res
if __name__ == "__main__":
app.run()
創建/取得/刪除 特定 cookies
from flask import Flask, render_template, session
import os
app = Flask(__name__)
app.config['DEBUG'] = True
app.config['SECRET_KEY'] = os.urandom(16)
@app.route('/session') # 建立session
def setsession():
session['mine'] = 'Richard'
return "My sessions"
@app.route("/get") #取得session
def getsession():
get_session = session.get('mine')
return get_session
@app.route('/del') #刪除session
def delsession():
del session['mine']
return 'Session deleted'
if __name__ == '__main__':
app.run()
os.urandom: 隨機生成一長度為 n bytes 的字串
MySQL
資料庫又稱為資料管理系統,可以視為電子化的檔案櫃,使用者可以對檔案中的資料執行: 新增、擷取、更新、刪除等等的操作。可以分為關聯式和非關聯式:
By Expect Lai
Here're notes about backend development.