話很少說先上效果圖演示html
項目
一、安裝組建git
redis: yum install redis/apt install redisgithub
二、建立虛擬化環境並進入web
python3/python -m venv venvajax
source venv\bin\activeredis
三、安裝第三方庫數據庫
pip install -r requirements.txtdjango
四、初始化json
python manage.py makemigrations
python manage.py migrate
python manage.py collectstatic
五、啓動服務
gunicorn -w 5 -k gevent -b 0.0.0.0:9990 webchat.wsgi
六、訪問
瀏覽器訪問 http://ip:9990
整個項目中涉及的思路和知識點咱們在這裏都一一分解爲你們詳細解說以下:
Django 基礎
Django :一個可使 Web 開發工做愉快而且高效的 Web 開發框架,可以以最小的代價構建和維護高質量的 Web 應用
框架:軟件開發工程師從平常的重複勞動中總結出快速的、模塊化的、安全的軟件開發模式
Django 是 Python 開發者的最佳 Web 框架
MVC
ORM
Object Relation Mapping (關係對象映射)
Mail (經過郵箱和驗證碼方式進行用戶登陸驗證)
開發者可爲使用 Django 提供的 send_mail 函數發送郵件
使用方法
配置郵箱(setting.py)
發送
send_mail(subject, message, from_email, recipient_list, fail_silently=False, auth_user=None, auth_password=None, connection=None, html_message=None)
注
Session & Cookie
實現用戶認證機制
是什麼?
WebSocket 是 HTML5 開始提供的一種在單個 TCP 鏈接上進行全雙工通信的協議
爲何須要?
HTTP 協議是一種無狀態的、無鏈接的、單向的應用層協議。它採用了請
求/響應模型。通訊請求只能由客戶端發起,服務端對請求作出應答處理
弊端
傳統模式下, Web 應用程序經過頻繁的 ajax 請求實現長輪詢( 輪詢是在 特定的時間間隔(如每1秒),由瀏覽器對服務器發出 HTTP 請求,而後由 服務器返回最新的數據給客戶端的瀏覽器)
缺點
發出請求)
如何工做?
Web 瀏覽器和服務器都必須實現 WebSockets 協議來創建和維護連 接,因爲 WebSockets 鏈接長期存在,與典型的 HTTP 鏈接不一樣,對 服務器有重要的影響(任何 WebSockets 服務器都須要實現爲異步服 務器,基於多線程或多進程的服務器沒法適用於 WebSockets,由於 它旨在打開鏈接,儘量快地處理請求,而後關閉鏈接)
在 WebSocket 協議中, 瀏覽器和服務器只須要作一個握手的動做,而後,瀏覽器和服務器之間就造成了一條快速通道。二者之間就直接能夠數據互相傳送。
如何使用?
客戶端 API (
一、建立 websocket 對象
var ws = new WebSocket(url, [protocol] );
二、屬性
ws.readyState 表示鏈接狀態
可選值:
ws.bufferedAmount 表示已被 send() 方法放入正在隊列中等待傳輸,可是尚未發 出的 UTF-8 文本字節數
三、事件
四、方法
send ws.send() 使用鏈接發送數據
close ws.close() 關閉鏈接
dwebsocket 模塊爲 django 提供了 WebSocket 協議的實現
使用
一、安裝
pip install dwebsocket
二、用法
使用 accept_websocket 或 require_websocket 裝飾器修飾 view
request.is_websocket 方法用於判斷是否爲 websocket 協議
獲取 websocket 鏈接對象
獲取數據
發送數據
其餘
Redis 是一個開源的,基於內存的,可持久化的,K-V 數據庫
用途:
發佈訂閱:是一種消息通訊模式,發送者(pub)發送消息,縮 影訂閱者(sub)均可以接收消息並處理
一、在 redis 客戶端中使用
二、在 python 中使用
redis 模塊
訂閱
發佈:
代碼結構
app 定義(app.py)
配置(settings.py)
流程
一、打開登陸頁面
二、發送驗證碼
三、登陸
路由(url.py)
視圖-view.py
視圖-models.py
視圖-templates/login.html
流程
建立 websocket 鏈接到 msg/,同時註冊 open, error, message 事件
當鏈接建立,調用 websocket.send 發送上線消息
用戶填寫消息,點擊按鈕,調用 websocket.send 方法發送聊天消息
urls.py 處理 url msg/ 到視圖 msg
msg 視圖接收和處理 websocket 消息,同時監聽和處理 redis 訂閱的 消息
獲取 websocket 鏈接和發送消息(index.html)
路由處理(view.py)
消息顯示處理(index.html)
你們對此項目分享有什麼疑問的請準備好在本週三晚上咱們的 kk 大牛會爲你們一一解答。
項目分享人:KK老師
多語言混搭開發工程師,多年 PHP、Python 項目開發經驗,曾就任 360、綠盟科技,7年工做經驗。擅長於 Web 安全開發、性能優化、分佈式應用開發&設計等多方面,51Reboot 金牌講師。
分享的時間
參與方式