999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

433學生成長平臺搜索及相關功能開發簡述

2022-03-29 22:44:50高天棟王鶴穎王葉萍李時穎
客聯 2022年1期
關鍵詞:數據庫用戶方法

高天棟 王鶴穎 王葉萍 李時穎

摘 要:本文主要描述如何通過前端頁面與數據庫、后臺的接口訪問與邏輯實現搜索和相關功能。

關鍵詞:433;搜索;開發

一、引言

“433”學生成長平臺是服務于蘇州經貿職業技術學院"433"學生成才工程的信息化平臺。本文主要描述“433”學生成長平臺中搜索功能及相關的開發與實現。

二、開發面臨的主要問題

(一)網頁采集數據雜亂

通過關鍵字獲取數據時,毫無關系的網頁、重復率極高信息使得獲取到的數據格式雜亂無章,獲取的規則極其不統一。使用xpath 模塊可解決此問題,對指定網址采用指定采集方式,將數據統一存入指定格式的類再存入總數據庫。

(二)用戶輸入關鍵詞雜亂

用戶使用搜索功能輸入十分隨意,如果輸入英文單引號則會引起數據庫存入數據報錯。輸入的關鍵詞過長會引起長度溢出錯誤。使用replace()方法檢測用戶輸入是否有英文單引號,如果存在則替換為中文單引號,當作字符串存入避免引發錯誤,而長度的問題初期使用了len()超過限制就刪除超出的部分成功解決,目前是將數據庫中varchar類型的列替換成了longtext類型,但隨之而來的問題是longtext類型無法使用alter 從別的解碼方式轉換為utf8。我將數據庫中原本的表刪除,創建了一樣的數據表并加上了charset = utf8;成功解決。

(三)服務器日志雜亂

開發時的環境在Windows下,在程序中寫了很多捕獲異常存入appLog.txt文本的腳本,方便后期查看報錯。在centos7 linux 環境下部署完成項目使用時沒有異常問題。上線一段時間后網站ip突然搜不到了,當我查看appLog.txt時發現,原本中文全部變成了亂碼,而英文安然無恙,第一時間想到的就時寫入時解碼方式不正確,于是在with open 中加入了encoding=”utf8”的限制,重新部署一段時間后發現appLog.txt打開還是中文亂碼。查詢了csdn后了解到了windows系統下的txt默認為gbk編碼,而linux默認是utf8編碼,所以通過xftp傳txt類型文件到linux時打開中文會亂碼,于是使用了iconv -f gbk -utf8 appLog.txt > appLog.txt 解決了這個問題。

三、后端開發思路分析

(一)數據接口

前端界面與后端邏輯代碼連接使用Flask中@app.route() 方法創建路由,使用render_template方法連接前端而實現,使用Falsk中request方法實現用戶前端輸入內容的獲取,配合使用jianjia2模板引擎實現后端數據向前端返回指定格式數據,實現前后端數據互聯互通又同時互不影響顯示和使用。

(二)數據庫

數據庫使用mysql關系型數據庫,使用pymysql模塊連接。

(三)搜索邏輯

搜索主要使用了request需要獲取用戶網頁前端輸入的關鍵字,并將關鍵字進行規整化處理,從數據庫中尋找是否相匹配的結果。如果用戶輸入關鍵字,返回的結果數量小10則從瀏覽器中再次搜索并將用戶輸入的關鍵字存入數據庫,以便于線下擴充數據庫。

其次就是對用戶是否登錄的檢測,是否登錄狀態下對前端的不同返回,以及對程序異常的抓取,和程序日志的儲存。以加強程序可維護性和穩定性。

@app.route("/",methods=["GET","POST"])def index():

if request.method == "GET":

try: id = session["id"] frequency = session["frequency"]

frequency = "重新查詢!"%frequency

return render_template("index.html",userName=id,frequency=frequency,id=id)

except: return render_template("index.html",userName="請登錄!")

elif request.method == "POST": userInput = request.form.get("userInput")

userInput = userInput.replace("'","‘")

# 提交用戶輸入 庫 sqlm = sql.Sql() question = sqlm.select(userInput)

try:sqlm = sql.Sql() sqlm.userInputSave(userInput)

except Exception as e:with open("appLog.txt","a",encoding="utf8") as f:

f.write( "\n" + str(e) + " \t " + time.strftime

('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))

if len(question) < 10: # 提交用戶輸入

quickm = quick.Quick(userInput=userInput)# 獲取返回數據

question = quickm.main()

try:id = session["id"]

return render_template("q.html", id=id,question=question)

except:return render_template("q.html",id="請登錄!",question=question)

(四)登錄邏輯

登錄功能使用了request和session完成了對用戶賬號密碼的獲取并對用戶的賬戶進行了短時間的存儲,同時使用存儲后的賬戶從數據庫中取出用戶的網絡ID。對用戶的輸入進行登錄邏輯判斷,為應對不同的情況使用了render_template方法對同一個界面做出了不同的返回。為減少代碼的編寫,使用request獲取到用戶的請求方式并做出不同響應。

@app.route("/login",methods=["GET","POST"])def login(): if request.method == "POST":? userName = request.form.get("userName") # 獲取用戶用戶名

password = request.form.get("password")? # 獲取用戶密碼 userSql = sql.Sql()

# 連接數據庫# 將數據傳入數據庫 密碼賬戶正確 返回 username,id,frequency 反之返回 Flase

data = userSql.userSelect(userName=userName, passWord=password)if data:

session["userName"] = data[1] session["id"] = data[0]

session["frequency"] = data[2] frequency = "請重新登錄" % data[2]

return render_template("index.html",id=data[0],frequency=frequency)

else:? return render_template("login.html",msg="密碼或用戶名錯誤")

elif request.method == "GET": return render_template("login.html")

(五)注冊邏輯

注冊功能也同樣使用了request和session完成了對用戶賬號密碼的獲取并對用戶的賬戶和用戶自定義的網絡ID進行了短時間的存儲,同時也存入數據庫供用戶登錄使用。對用戶的輸入進行注冊邏輯判斷,為應對不同的情況使用了render_template方法對同一個界面做出了不同的返回,和登錄不同的是注冊可能會出現賬戶相同的情況,使用了try…except的方法對異常經行捕捉并給用戶返回對應提示。

@app.route("/zhuce",methods=["GET","POST"])def zhuce():

if request.method == "POST":? userSql = sql.Sql()

userName = request.form.get("phone") passWord = request.form.get("password")

againPassword = request.form.get("againPassword") userId = request.form.get("id")

if passWord == againPassword and len(userId) <= 10: try: session["id"] = userId

session["userName"] = userName

userSql.userInsert(userName=userName, passWord=passWord, userId=userId)

return render_template("index.html",id=userId)

except: return render_template("zhuce.html",msg="你的手機號輸入錯誤了!")

elif len(userId) > 10: return render_template("zhuce.html",msg="最多10個")

else: return render_template("zhuce.html",msg="兩次密碼不一樣!")

elif request.method == "GET": return render_template("zhuce.html")

(六)留言板邏輯

留言板模塊主要是為了收集評論和留言。重點技術使用了pymysql從數據庫中拿到對應數據返回到前端使用jianjia2格式化排列輸出,以做到網頁動態顯示,代碼如下。

@app.route("/board",methods=["GET","POST"])def board():

if request.method == "GET": try:id = session["id"]

except: id = "請登錄!"

boardSql=sql.Sql()data=boardSql.boardSelect()return ender_template("messageBoard.html",data=data,id=id)

elif request.method == "POST":

try: id = session["id"] userName = session["userName"]

except: id = "游客" userName = "游客"

boardSql = sql.Sql() text = request.form['text']

boardSql.boardInsert(text=text,userName=userName,who=id)

data = boardSql.boardSelect()

return render_template("messageBoard.html", data=data, id=id)

(七)公告邏輯

@app.route("/bulletinWall")def bulletinWall():? ? try: id = session["id"]

except: id = "請登錄!"return render_template("bulletinWall.html",id=id)

參考文獻:

[1] 楊選輝.信息系統分析與設計[J].北京:清華大學出版社.2016

[2] 錢雪忠.數據庫原理及應用[M].北京:北京郵電大學出版社.2017.08

[3] 張海藩.軟件工程導論[M].北京:清華大學出版社.2018

猜你喜歡
數據庫用戶方法
數據庫
財經(2017年2期)2017-03-10 14:35:35
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
可能是方法不對
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
數據庫
財經(2016年15期)2016-06-03 07:38:02
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
主站蜘蛛池模板: 国产成人调教在线视频| 丝袜高跟美脚国产1区| 成人日韩精品| 亚洲男人天堂网址| 19国产精品麻豆免费观看| 制服丝袜一区二区三区在线| 国产女人在线| 无码专区国产精品一区| 九九免费观看全部免费视频| 亚洲黄色视频在线观看一区| 国产一区成人| 2021国产v亚洲v天堂无码| 54pao国产成人免费视频| 色婷婷亚洲十月十月色天| 日本高清视频在线www色| 日韩免费中文字幕| 在线免费亚洲无码视频| 欧美伊人色综合久久天天| 国产日本视频91| 免费中文字幕一级毛片| 国产一级视频久久| 色综合手机在线| 午夜在线不卡| 中文字幕亚洲精品2页| 99青青青精品视频在线| 免费人成视网站在线不卡| 中文字幕 欧美日韩| 中文无码影院| 亚洲va视频| 亚洲中文精品人人永久免费| 青青草a国产免费观看| h网址在线观看| 欧美成在线视频| 亚洲成a人片77777在线播放 | 青青国产成人免费精品视频| 香蕉国产精品视频| 真实国产乱子伦视频| 99国产在线视频| 日本亚洲欧美在线| 欧美另类图片视频无弹跳第一页| 浮力影院国产第一页| 欧美日韩国产在线人成app| 极品私人尤物在线精品首页| 亚洲欧洲国产成人综合不卡| 中文无码毛片又爽又刺激| AV不卡在线永久免费观看| 欧美国产三级| 国产99视频免费精品是看6| 人禽伦免费交视频网页播放| 自慰高潮喷白浆在线观看| 成人午夜网址| 久久精品一品道久久精品| 国产麻豆精品在线观看| 亚洲人精品亚洲人成在线| 最新日韩AV网址在线观看| 日韩不卡免费视频| 国产精品大白天新婚身材| 亚洲天堂久久新| 国产剧情伊人| 国产一级无码不卡视频| 久久香蕉国产线看观看式| 九一九色国产| 精品国产99久久| 亚洲国产无码有码| 日本尹人综合香蕉在线观看 | 成人亚洲天堂| 亚洲视频一区在线| 国产亚洲欧美另类一区二区| 国产乱人激情H在线观看| 日韩在线影院| 国产精品 欧美激情 在线播放 | 亚洲成人网在线播放| 国产情侣一区| 宅男噜噜噜66国产在线观看| 精品一區二區久久久久久久網站 | 国产成人狂喷潮在线观看2345| 中文字幕无码av专区久久| 久久香蕉国产线看观看亚洲片| 99久久国产综合精品2023| 亚洲91精品视频| 国产爽爽视频| 色欲不卡无码一区二区|