--- lang: zh-tw --- Î # Club :::success 所應用之 [Lib](https://cdn.discordapp.com/attachments/858872050000461824/1230030239816617994/SkywebAPI.py?ex=6631d5ee&is=661f60ee&hm=f4918c0da66fd96469bc5cbf346a02b6a1b4c670901d68fb31d3bd12aaf0cc2b&) 最後更新時間: 24/04/17 13:41 ::: ::::::spoiler Day1 [TOC] ## 事前工作 以下工具若電腦有內建,則可省略不安裝。 ### 安裝 Python :::info 先開啟命令提示字元(cmd),輸入 `python --verison` 看看有沒有輸出以下文字。若有則代表已經有安裝過 Python。 ![image](https://hackmd.io/_uploads/Syi63wckA.png) ::: [Python 3.11.9 載點](https://www.python.org/ftp/python/3.11.9/python-3.11.9-amd64.exe) ### 安裝 Flask, requests library 開啟命令提示字元 `pip install Flask` `pip install requests` ### 安裝 VsCode [win64](https://code.visualstudio.com/docs/?dv=win64user) --- ## What is Python ### 優點 1. 簡潔易學:Python 的語法簡潔明瞭,容易上手 2. 跨平台性:Python 可以運行在多種操作系統上 3. 可擴充性:Python 的模組化設計,讓程式碼可以輕鬆擴充 4. 開放原始碼:Python 是開放原始碼軟體,可以免費使用 ### 缺點 ![image](https://hackmd.io/_uploads/rJ3_uv9kA.png =400x) ## What is Flask 1. Used in Python 2. 簡單 3. 適合學習網頁的架構 ### 快速建立 Flask 網站 (7 行 1 網站) ```python= from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Hello World!" if __name__ == "__main__": app.run() ``` ![image](https://hackmd.io/_uploads/Bkje3v510.png =450x) ### 透過檔案渲染 html ```html= <!-- 檔案路徑 templates/hello.html --> <!DOCTYPE html> <html> <body> <h1>Hello World</h1> </body> </html> ``` ```python= from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "HOME PAGE" @app.route("/hello") def print_html(): return render_template('hello.html') # 檔案路徑 templates/hello.html if __name__ == "__main__": app.run() ``` --- <br/><br/><br/> ## 今日目標 :::success 建立一個登入網站,透過天方系統查找使用者名稱 ::: ![image](https://hackmd.io/_uploads/rk92RDqyA.png) ![image](https://hackmd.io/_uploads/SJfA0P510.png) --- ### 1. 透過 AI 生成 html 網站 <font size=4>https://zzzcode.ai/html/code-generator</font> #### 怎麼問 ![image](https://hackmd.io/_uploads/HkmF1OqJ0.png =600x) #### 結果 ![image](https://hackmd.io/_uploads/r1IzfOcJA.png =600x) --- ```html= <!-- templates/login.html --> <!DOCTYPE html> <html lang="en-US"> <head> <title>Login Page</title> </head> <body> <form action="/login" method="post"> <label for="username">Username:</label> <input type="text" id="username" name="username"><br><br> <label for="password">Password:</label> <input type="password" id="password" name="password"><br><br> <input type="submit" value="Login"> </form> </body> </html> ``` --- ### 2. 透過已完成的 Library 快速訪問 使用範例: ```python= from SkywebAPI import * @app.route('/login', methods=['POST']) def login(): username = request.form['username'] # 必須要和 html 一致 password = request.form['password'] # 必須要和 html 一致 try: manager = SkywebAPI(username, password, School.國立成功大學附屬臺南工業高級中等學校) return f'{manager.get_profile().name} 哈囉!' except RuntimeError: return '登入失敗' ``` ## 答案 :::spoiler 答案 ```python= from SkywebAPI import * from flask import Flask, request, render_template app = Flask(__name__) @app.route('/login', methods = ['POST']) def login_post(): username = request.form['username'] # 必須要和 html 一致 password = request.form['password'] # 必須要和 html 一致 try: manager = SkywebAPI(username, password) return f'{manager.get_profile().name} 哈囉!' except RuntimeError: return '登入失敗' @app.route('/login', methods = ['GET']) def login_get(): return render_template('login.html') if __name__ == '__main__': app.run() ``` ::: --- :::::: --- ::::::spoiler Day2 :::::: --- > [name=XinShou] > [name=Ja Wu] --- ###### tags: `Tutor` `Club` <style> .markdown-body p { font-size: 18px; } </style>