• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于Django的產(chǎn)品檢驗文檔處理系統(tǒng)的主要功能實現(xiàn)

    2021-09-23 06:08:16牛鶴寧高小堯
    電子技術(shù)與軟件工程 2021年12期
    關(guān)鍵詞:產(chǎn)品檢驗申請單字段

    牛鶴寧 高小堯

    (1.中國電子信息產(chǎn)業(yè)集團有限公司第六研究所 北京市 102209 2.北京市南水北調(diào)信息中心 北京市 100195)

    1 引言

    作為產(chǎn)品檢驗人員,工作中需要處理大量的文檔,如檢驗記錄,檢驗報告等。而這些記錄和報告往往具有統(tǒng)一的模板?;诖诵枨缶帉懥艘豢钺槍Ξa(chǎn)品檢驗的文檔處理系統(tǒng)。近些年,隨著 Python 逐漸火熱,國內(nèi)外使用 Python 主流 Web 框架 Django開發(fā)的互聯(lián)網(wǎng)軟件也愈發(fā)增多。國內(nèi)比較出名的有豆瓣,海報網(wǎng),新浪,扇貝網(wǎng),貝太廚房等[5]。Django 具有簡潔、清晰、高效、安全的開發(fā)特點,非常適合小型系統(tǒng)的開發(fā)。

    2 Django的產(chǎn)品檢驗文檔處理系統(tǒng)的功能實現(xiàn)

    Django使用forms表單的形式與后臺邏輯進行交互,主要完成以下工作:

    (1)根據(jù)用戶輸入提交表單。

    (2)根據(jù)檢驗申請單和檢驗大綱導入,提取字段后提交表單。

    (3)對提交的數(shù)據(jù)進行校驗,查看數(shù)據(jù)庫中是否有重復數(shù)據(jù)。

    (4)如果出現(xiàn)重復數(shù)據(jù),則提示用戶是否刪除舊數(shù)據(jù),若刪除,則自動更新成新提交數(shù)據(jù),若不刪除,則需用戶重新輸入提交數(shù)據(jù)。

    (5)自動生成檢驗記錄和檢驗報告。

    (6)用戶輸入數(shù)據(jù)及導入數(shù)據(jù)均存入數(shù)據(jù)庫。

    (7)條件查詢功能,可根據(jù)工程令號,產(chǎn)品名稱,檢驗人員繼續(xù)組合查詢。

    (8)根據(jù)查詢列表導出檢驗臺賬。

    2.1 數(shù)據(jù)查詢

    2.1.1 Django ORM(對象數(shù)據(jù)映射)

    Django ORM與數(shù)據(jù)庫映射的關(guān)系表現(xiàn)為Django中的一個數(shù)據(jù)模型(Model)映射一個數(shù)據(jù)庫表。其基本情況是:類(Django.db.models.Model)映射到數(shù)據(jù)庫表,類的屬性映射為數(shù)據(jù)庫表字段,類的實例對象則映射為數(shù)據(jù)行[3]。

    ORM封裝了SQL語句的功能,通過統(tǒng)一的業(yè)務(wù)邏輯代碼來操作數(shù)據(jù)庫。因此它在語法上與SQL語句有很大差別。

    2.1.2 條件查詢

    數(shù)據(jù)查詢可實現(xiàn) 3 種關(guān)鍵詞(工程令號,產(chǎn)品名稱,檢驗人員)的組合查詢,選擇或錄入查詢關(guān)鍵詞,點擊搜索按鈕即可將數(shù)據(jù)庫中的信息按條件可視化地展示在數(shù)據(jù)網(wǎng)格中。查詢出的數(shù)據(jù)自動分頁展示,用戶可自定義按照時間順序正序或倒序排列數(shù)據(jù),檢驗結(jié)果中的不合格檢驗項目以紅底色顯現(xiàn)。由此,用戶在遠程計算機上即可實現(xiàn)測試數(shù)據(jù)的網(wǎng)絡(luò)化查詢。

    跨表多條件查詢分為2步,第一步是跨表查詢,第二步是多條件查詢。

    (1)結(jié)果字段跨表查詢:

    取得跨表查詢字段值得形式為“外鍵+雙下劃線+關(guān)聯(lián)表的字段名”,如shenqing__projectname,shenqing為數(shù)據(jù)表Jianyaninfo中的外鍵,定義為shenqing = models.ForeignKey(JianyanShenqingdan, default="",on_delete=models.CASCADE),通過外鍵shenqing關(guān)聯(lián)到JianyanShenqingdan中的字段projectname。

    查詢通過內(nèi)置函數(shù)values()返回一個字典查詢列表,列表每一項為字典型、鍵名為字段名,值為字段值。如下面代碼所示,所有需要查詢的結(jié)果生成一個結(jié)果列表:

    (2)多條件查詢:

    在上述結(jié)果列表的基礎(chǔ)上,增加條件查詢,并通過filter函數(shù)過濾條件。因為存在多個條件,所以先把所有條件組成一個數(shù)據(jù)字典,如下代碼所示:

    字典中只保留不為空的值,根據(jù)字典查詢結(jié)果,如下代碼所示:

    2.2 自動生成word文檔

    2.2.1 根據(jù)模板生成文檔

    Python中有豐富的資源庫,其中docxtpl就是一個很強大的庫,它通過對docx文檔模板加載,使用jinja2網(wǎng)頁模板開發(fā)的語法對其進行修改。Jinja2使用{{}}聲明模板中的變量,將docx模板中需要替換的內(nèi)容使用{{…}}手動標注起來。從導入的word文檔中讀取值或者從界面寫入值,并把這些值傳到前臺與docx模板中預設(shè)的變量名對應(yīng)起來,使用docxtpl庫中的DocTemplate.Render完成模板替換,輸出替換后的docx,從而自動生成word文檔。

    圖1:tables模板

    圖2:導入界面

    實現(xiàn)代碼如下:

    2.2.2 循環(huán)生成多個表格

    本文除了用到了docxtpl包,還與docx包進行了合并使用,實現(xiàn)循環(huán)生成多個表格。通過for循環(huán)操作,具體做法如下:在文檔中生成另一個文檔,定義變量sd = tpl.new_subdoc(),并且給變量增加段,sd.add_paragraph('(' + str(i+1) + ')'),添加表格,table = sd.add_table(rows=rows, cols=0, style='Style3'),并把此變量通過context賦予DocxTemplate類型的變量,然后使用docxtpl庫中的DocTemplate.Render完成模板替換,輸出替換后的docx,從而自動生成word文檔。context的格式為'tables': sd,'tables'即為word模板中的字段。

    tables字段在模板的對應(yīng)位置如圖1所示。

    實現(xiàn)代碼如下:

    把上述循環(huán)列表sd加入對應(yīng)字段context中,并通過tpl.render(context)完成模板替換,并保存。

    2.3 導入導出

    本系統(tǒng)涉及對文件進行導入導出操作的有三處,分別是對檢驗申請單和檢驗大綱的導入、檢驗報告和檢驗記錄的導出、臺賬導出為Excel文件。

    2.3.1 檢驗申請單和檢驗大綱的導入

    本系統(tǒng)對檢驗申請單和檢驗大綱的導入是通過Ajax異步傳輸?shù)姆绞?,不重新加載頁面的情況下,與后端服務(wù)器交換數(shù)據(jù)并更新部分網(wǎng)頁內(nèi)容。導入界面如圖2所示,

    實現(xiàn)過程如下:

    (1)JavaScript:首先創(chuàng)建formdata對象,append()的第二個參數(shù)應(yīng)為文件對象,利用ajax把formdata對象異步傳輸給后臺服務(wù)器。上傳后,服務(wù)器端代碼需要使用從查詢參數(shù)名為file獲取文件輸入流對象。因為中聲明的name=”file”[7]。實現(xiàn)代碼此處略。

    (2)在dapru應(yīng)用的view.py中新建視圖函Supload(request),通過request.FILES來獲取上傳文件并保存上傳文件到static/files文件夾內(nèi)。

    2.3.2 導出檢驗記錄和檢驗報告

    Django導出文件有三種方式:HttpResponse,StreamingHttp Response,F(xiàn)ileResponse。本文主要介紹FileResponse實現(xiàn)方式。FileResponse方法是SteamingHttpResponse的子類,我們只需要將連接地址傳給FileResponse函數(shù),就可以實現(xiàn)下載功能,然而這個方法目前尚需完善,因為用戶只要獲取了文件的鏈接地址,就可以通過此接口直接訪問那些文件。后續(xù)開發(fā)中會實現(xiàn)文件私有化以及限定文件類型等功能。

    實現(xiàn)代碼如下:

    2.3.3 Excel臺賬的導出

    Excel文件的導出需要使用到三個模塊,openpyxl,BytesIO,urlquote。openpyxl庫是用來用Python代碼操作Excel表的庫;BytesIO可以實現(xiàn)在內(nèi)存中讀寫bytes;urlquote用來解決導出Excel文件無法使用中文文件名的問題[6]。

    主要實現(xiàn)代碼如下:

    3 結(jié)語

    基于Django的Web編程是非常高效的,開發(fā)周期大大減少,可以在短時間內(nèi)完成中小型網(wǎng)站的開發(fā)工作。產(chǎn)品檢驗文檔處理系統(tǒng)的實現(xiàn)使得產(chǎn)品檢驗中的文檔編寫工作化繁為簡,大大節(jié)省了工作時間,提高了工作效率。此項目中所有工作均獨立完成。項目中的部分功能實現(xiàn)還需進一步完善,頁面也需進一步優(yōu)化,后續(xù)將繼續(xù)完善系統(tǒng),擴展更多的功能模塊。

    猜你喜歡
    產(chǎn)品檢驗申請單字段
    圖書館中文圖書編目外包數(shù)據(jù)質(zhì)量控制分析
    裝飾石材產(chǎn)品檢驗時應(yīng)掌握的方法與指標(二)
    石材(2022年4期)2022-06-15 08:54:48
    裝飾石材產(chǎn)品檢驗時應(yīng)掌握的方法與指標(一)
    石材(2022年3期)2022-06-01 06:23:46
    PDCA 循環(huán)在臨床輸血申請單書寫質(zhì)量持續(xù)改進中的作用分析
    臨床輸血申請單不合格項目分析及應(yīng)對措施
    單體光電產(chǎn)品檢驗驗收方案問題探討
    我院檢查申請單流程設(shè)計與應(yīng)用
    PDCA循環(huán)在輸血申請單規(guī)范填寫管理中的作用
    山東省2016年夏季(2016年6-8月)數(shù)值預報產(chǎn)品檢驗
    CNMARC304字段和314字段責任附注方式解析
    汶川县| 睢宁县| 鹤峰县| 陵水| 仁寿县| 屯昌县| 星子县| 西和县| 道真| 衡东县| 镇坪县| 大名县| 龙南县| 宜君县| 河池市| 云南省| 迁西县| 山丹县| 将乐县| 浪卡子县| 黔江区| 射洪县| 千阳县| 正安县| 波密县| 会理县| 南投县| 石柱| 永善县| 讷河市| 宣恩县| 盐城市| 西乌珠穆沁旗| 会宁县| 泸州市| 横峰县| 临海市| 含山县| 元氏县| 昭苏县| 林西县|