實戰專案之基於flask的及時聊天系統

2021-10-12 09:16:36 字數 3318 閱讀 9428

web開發就是基於瀏覽器進行人機互動,當訪客登入到指定**後,不僅可以看到瀏覽器渲染的畫面,同時還可以與後台進行一些操作,再通過瀏覽器返回後台伺服器處理的結果,這段時間一直在摸索利用flask框架來做點有意思的事,這不,他就來了。相對於django框架,flask具有以下特點,

flask:

小巧、靈活,讓程式設計師自己決定定製哪些功能,非常適用於小型**。

對於普通的工人來說將毛坯房裝修為城市綜合體還是很麻煩的,使用flask來開發大型**也一樣,開發的難度較大,**架構需要自己設計,開發成本取決於開發者的能力和經驗。

django:

大而全,功能極其強大,是python web框架的先驅,使用者多,第三方庫極其豐富。

非常適合企業級**的開發,但是對於小型的微服務來說,總有「殺雞焉有宰牛刀」的感覺,體量較大,非常臃腫,定製化程度沒有flask高,也沒有flask那麼靈活。

下面就是具體開發過程,技術棧包括簡單的html+css+mysql+flask

(1)前端介面

顯示的結果如下

具體**如下

%s

(2)資料庫db

這裡採用的是mysql資料庫,可以根據自己的要求進行替換,不過需要你自己先建表,比如posts表

create database forum; ##建立資料庫

use forum; ###使用該資料庫

create table posts (content varchar(100) not null,time datetime not null,id int(10) auto_increment ); ###建立posts表

然後聊天內容的增刪操作

import pymysql

dbhost='localhost'

dbuser="root"

dbpassword="***xx"

dbname="forum"

def get_post():

try:

db=pymysql.connect(dbhost,dbuser,dbpassword,dbname)

print('get資料庫連線成功')

except pymysql.error as e:

print("get資料庫連線失敗"+str(e))

c=db.cursor()

c.execute("select content,time from posts order by time desc")

posts=c.fetchall()

db.close()

return posts

def add_post(content):

try:

db=pymysql.connect(dbhost,dbuser,dbpassword,dbname)

print('post資料庫連線成功')

except pymysql.error as e:

print("post資料庫連線失敗"+str(e))

c=db.cursor()

sqlquery="insert into posts(content,time) value (%s,%s)"

c.execute(sqlquery,content)

db.commit()

db.close()

def del_cnt():

try:

db=pymysql.connect(dbhost,dbuser,dbpassword,dbname)

print('post資料庫連線成功')

except pymysql.error as e:

print("post資料庫連線失敗"+str(e))

c=db.cursor()

sqlquery="delete from posts where id like (select * from (select max(id) from posts) tmp)"

c.execute(sqlquery)

db.commit()

db.close()

(3)flask框架

基於前後端的一些操作,整合如下

from flask import flask,request,redirect,url_for

from tiebadb import add_post,get_post,del_cnt

import time

import tkinter.messagebox as tm

html_wrap='''\

%s'''

post='''\

%s%s

'''def main():

posts="".join(post % (date,text) for text,date in get_post())

html=html_wrap % posts

return html

def post():

try:

bt=request.form["bt2"]

message=request.form['content']

if bt is "" and message is "":

del_cnt()

except exception as e:

print("錯誤型別:{}".format(e))

message=request.form['content']

t = time.strftime("%y-%m-%d %h:%m:%s", time.localtime())

data = (str(message), str(t))

add_post(data)

return redirect(url_for('main'))

if __name__=='__main__':

這樣,當整個**run起來後,如果顯示如下結果則表示沒錯,開啟瀏覽器輸入localhost:8000即可

最後補充一句,這只是乙個簡單的及時聊天系統,如果你想和朋友在乙個區域網內實現自己的簡單溝通,記得提前開啟你的8000埠,或者關閉防火牆,然後讓你得朋友在瀏覽器中輸入你電腦的ip:8000即可開啟聊天對話方塊。好了,今天就先到這裡,下次有機會再一起分享。

基於python的opencv專案實戰P4

形態學 腐蝕操作import cv2 import matplotlib.pyplot as plt import numpy as np get ipython run line magic matplotlib inline 腐蝕dige img cv2.imread dige.png cv2....

flask系列之專案框架

flask作為乙個小巧的web框架受到很多人喜愛,這裡講一下flask開發web應用時的乙個典型框架,從總體上把握結構 上面就是乙個典型的結構。其次,templates作為乙個固定的資料夾,儲存了所有的html檔案,所有的返回模板的方法都會從這個資料夾開始找而且預設是作為模板的根檔案。我們還可以看到...

flask之專案部署

部署flask專案 專案名為aj這裡寫 片 配置 1.檢查雲伺服器安全組中埠是否開放 2.配置環境 nginx的配置conf位置 etc nginx nginx.conf 啟動 systemctl start nginx systemctl restart nginx 重啟 systemctl st...