python項目之web聊天室的簡單介紹

本文目錄一覽:

使用python創建web靜態網站

打開pyCharm企業版軟件,創建一個Django項目,其中Django是一個Web框架,用於幫助開發交互式網站的工具。生成項目文件如下圖所示:

在url.py文件中添加為:

在view.py文件中添加:

在templates文件夾中新建index.html文件

其中a為超鏈接標籤,在此使用了一個模板標籤,是用大括號和百分號({% %})表示的。{% url ‘namespacename:index’ %}是一個模板標籤,指向url.py中index的URL模式匹配。在這個實例中,namespacename是對應的命名空間名稱,index是URL模式。

如何用Python做Web開發?

Python的Web開發,也是工作崗位比較多的領域。

一、基於Python的代表性Web框架

下面是一些比較有代表性的框架:

Django:

Python 界最全能的 Web 開發框架,battery-include 各種功能完備,可維護性和開發速度一級棒。常有人說 Django 慢,其實主要慢在 Django ORM 與數據庫的交互上,所以是否選用 Django,取決於項目對數據庫交互的要求以及各種優化。而對於 Django 的同步特性導致吞吐量小的問題,其實可以通過 Celery 等解決,倒不是一個根本問題。Django 的項目代表:Instagram,Guardian。

花了2萬多買的Python70個項目,現在分享給大家,練手進廠靠它了

前言:

不管學習哪門語言都希望能做出實際的東西來,這個實際的東西當然就是項目啦,不用多說大家都知道學編程語言一定要做項目才行。

這裡整理了70個Python實戰項目列表,都有完整且詳細的教程,你可以從中選擇自己想做的項目進行參考學習練手,你也可以從中尋找靈感去做自己的項目。

1、【Python 圖片轉字符畫】

2、【200行Python代碼實現2048】

3、【Python3 實現火車票查詢工具】

4、【高德API+Python解決租房問題 】

5、【Python3 色情圖片識別】

6、【Python 破解驗證碼】

7、【Python實現簡單的Web服務器】

8、【pygame開發打飛機 遊戲 】

9、【Django 搭建簡易博客】

10、【Python基於共現提取《釜山行》人物關係】

11、【基於scrapy爬蟲的天氣數據採集(python)】

12、【Flask 開發輕博客】

13、【Python3 圖片隱寫術】

14、【Python 實現簡易 Shell】

15、【使用 Python 解數學方程】

16、【PyQt 實現簡易瀏覽器】

17、【神經網絡實現手寫字符識別系統 】

18、【Python 實現簡單畫板】

19、【Python實現3D建模工具】

20、【NBA常規賽結果預測——利用Python進行比賽數據分析】

21、【神經網絡實現人臉識別任務】

22、【Python文本解析器】

23、【Python3 OpenCV 視頻轉字符動畫】

24、【Python3 實現淘女郎照片爬蟲 】

25、【Python3實現簡單的FTP認證服務器】

26、【基於 Flask 與 MySQL 實現番劇推薦系統】

27、【Python 實現端口掃描器】

28、【使用 Python 3 編寫系列實用腳本】

29、【Python 實現康威生命 遊戲 】

30、【川普撞臉希拉里(基於 OpenCV 的面部特徵交換) 】

31、【Python 3 實現 Markdown 解析器】

32、【Python 氣象數據分析 — 《Python 數據分析實戰》】

33、【Python實現鍵值數據庫】

34、【k-近鄰算法實現手寫數字識別系統】

35、【ebay在線拍賣數據分析】

36、【Python 實現英文新聞摘要自動提取 】

37、【Python實現簡易局域網視頻聊天工具】

38、【基於 Flask 及爬蟲實現微信 娛樂 機器人】

39、【Python實現Python解釋器】

40、【Python3基於Scapy實現DDos】

41、【Python 實現密碼強度檢測器】

42、【使用 Python 實現深度神經網絡】

43、【Python實現從excel讀取數據並繪製成精美圖像】

44、【人機對戰初體驗:Python基於Pygame實現四子棋 遊戲 】

45、【Python3 實現可控制肉雞的反向Shell】

46、【Python打造漏洞掃描器 】

47、【Python應用馬爾可夫鏈算法實現隨機文本生成】

48、【數獨 遊戲 的Python實現與破解】

49、【使用Python定製詞雲】

50、【Python開發簡單計算器】

51、【Python 實現 FTP 弱口令掃描器】

52、【Python實現Huffman編碼解壓縮文件】

53、【Python實現Zip文件的暴力破解 】

54、【Python3 智能裁切圖片】

55、【Python實現網站模擬登陸】

56、【給Python3爬蟲做一個界面.妹子圖網實戰】

57、【Python 3 實現圖片轉彩色字符】

58、【自聯想器的 Python 實現】

59、【Python 實現簡單濾鏡】

60、【Flask 實現簡單聊天室】

61、【基於PyQt5 實現地圖中定位相片拍攝位置】

62、【Python實現模板引擎】

63、【Python實現遺傳算法求解n-queens問題】

64、【Python3 實現命令行動態進度條】

65、【Python 獲取挂號信息並郵件通知】

66、【Python實現java web項目遠端自動化更新部署】

67、【使用 Python3 編寫 Github 自動周報生成器】

68、【使用 Python 生成分形圖片】

69、【Python 實現 Redis 異步客戶端】

70、【Python 實現中文錯別字高亮系統】

最後:

以上項目列表希望可以給你在Python學習中帶來幫助~

獲取方式:轉發 私信“1”

如何用Python編寫一個聊天室

 1.服務器類

首先需要一個聊天服務器,這裡繼承asyncore的dispatcher類來實現,代碼如下

class ChatServer(dispatcher):

“””

聊天服務器

“””

def __init__(self, port):

dispatcher.__init__(self)

self.create_socket(socket.AF_INET, socket.SOCK_STREAM)

self.set_reuse_addr()

self.bind((”, port))

self.listen(5)

self.users = {}

self.main_room = ChatRoom(self)

def handle_accept(self):

conn, addr = self.accept()

ChatSession(self, conn)

2.會話類

有了服務器類還需要能維護每個用戶的連接會話,這裡繼承asynchat的async_chat類來實現,代碼如下:

class ChatSession(async_chat):

“””

負責和單用戶通信

“””

def __init__(self, server, sock):

async_chat.__init__(self, sock)

self.server = server

self.set_terminator(‘n’)

self.data = []

self.name = None

self.enter(LoginRoom(server))

def enter(self, room):

‘從當前房間移除自身,然後添加到指定房間’

try:

cur = self.room

except AttributeError:

pass

else:

cur.remove(self)

self.room = room

room.add(self)

def collect_incoming_data(self, data):

‘接受客戶端的數據’

self.data.append(data)

def found_terminator(self):

‘當客戶端的一條數據結束時的處理’

line = ”.join(self.data)

self.data = []

try:

self.room.handle(self, line)

except EndSession:

self.handle_close()

def handle_close(self):

async_chat.handle_close(self)

self.enter(LogoutRoom(self.server))

3.命令解釋器

現在就需要一個命令解釋器能夠解釋用戶的命令,例如登錄、查詢在線用戶和發消息等,代碼如下:

class CommandHandler:

“””

命令處理類

“””

def unknown(self, session, cmd):

‘響應未知命令’

session.push(‘Unknown command: %sn’ % cmd)

def handle(self, session, line):

‘命令處理’

if not line.strip():

return

parts = line.split(‘ ‘, 1)

cmd = parts[0]

try:

line = parts[1].strip()

except IndexError:

line = ”

meth = getattr(self, ‘do_’ + cmd, None)

try:

meth(session, line)

except TypeError:

self.unknown(session, cmd)

4.房間

接下來就需要實現聊天室的房間了,這裡我們定義了三種房間,分別是用戶剛登錄時的房間、聊天的房間和退出登錄的房間,這三種房間都有一個公共的父類,代碼如下:

class Room(CommandHandler):

“””

包含多個用戶的環境,負責基本的命令處理和廣播

“””

def __init__(self, server):

self.server = server

self.sessions = []

def add(self, session):

‘一個用戶進入房間’

self.sessions.append(session)

def remove(self, session):

‘一個用戶離開房間’

self.sessions.remove(session)

def broadcast(self, line):

‘向所有的用戶發送指定消息’

for session in self.sessions:

session.push(line)

def do_logout(self, session, line):

‘退出房間’

raise EndSession

class LoginRoom(Room):

“””

剛登錄的用戶的房間

“””

def add(self, session):

‘用戶連接成功的回應’

Room.add(self, session)

session.push(‘Connect Success’)

def do_login(self, session, line):

‘登錄命令處理’

name = line.strip()

if not name:

session.push(‘UserName Empty’)

elif name in self.server.users:

session.push(‘UserName Exist’)

else:

session.name = name

session.enter(self.server.main_room)

class ChatRoom(Room):

“””

聊天用的房間

“””

def add(self, session):

‘廣播新用戶進入’

session.push(‘Login Success’)

self.broadcast(session.name + ‘ has entered the room.n’)

self.server.users[session.name] = session

Room.add(self, session)

def remove(self, session):

‘廣播用戶離開’

Room.remove(self, session)

self.broadcast(session.name + ‘ has left the room.n’)

def do_say(self, session, line):

‘客戶端發送消息’

self.broadcast(session.name + ‘: ‘ + line + ‘n’)

def do_look(self, session, line):

‘查看在線用戶’

session.push(‘Online Users:n’)

for other in self.sessions:

session.push(other.name + ‘n’)

class LogoutRoom(Room):

“””

用戶退出時的房間

“””

def add(self, session):

‘從服務器中移除’

try:

del self.server.users[session.name]

except KeyError:

pass

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/183454.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-24 16:29
下一篇 2024-11-24 16:29

相關推薦

  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • 蝴蝶優化算法Python版

    蝴蝶優化算法是一種基於仿生學的優化算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化算法Python版…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智能、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29

發表回復

登錄後才能評論