Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 国产成人精品日本亚洲网址,欧美精品成人免费视频,九九九国产在线

          整合營銷服務(wù)商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          游戲雙端程序員轉(zhuǎn)行互聯(lián)網(wǎng)后端半年,所接觸到的新技術(shù)們

          游戲雙端程序員轉(zhuǎn)行互聯(lián)網(wǎng)后端半年,所接觸到的新技術(shù)們

          近剛優(yōu)化完Django后臺界面JSON格式數(shù)據(jù)的展示,讓我感受到一點小小成就感。優(yōu)化過程中,我特別想寫一篇技術(shù)博客,說一說整個實現(xiàn)流程;待功能做完,又感覺似乎能說的內(nèi)容極少——這個優(yōu)化,是很簡單的。(我常有類似感受,一個東西花了很長時間才處理掉,處理完畢之后會覺得如此簡單并開始質(zhì)疑自己如何花了許多時間?)


          // 有中文的JSON

          {"insun": "\u6cf0\u56e7 / \u4eba\u5728\u56e7\u90142 / Lost in Thailand "}

          JSON數(shù)據(jù),包含中文之后看起來亂亂的,會影響我工作效率。我想明白它的具體內(nèi)容,需要將它的內(nèi)容復(fù)制到一個工具網(wǎng)站上進行查看。我要將這復(fù)制粘貼再點一下的過程去掉,我要我所見到的是我能看懂的!


          谷歌了一下,似乎做這個優(yōu)化的程序員并不多,只有一個叫做Django-JSONEditor的自定義控件可用。


          按照作者的步驟能夠很方便的將問題解決。我因為上面的一個廣告按鈕而拒絕使用,我以為這廣告是Django-JSONEditor加上的,于是自己模仿它的實現(xiàn)做一個自定義控件將其搬到Django中。搬的過程遇見靜態(tài)資源加載不出來的情況,又一通谷歌,彎彎繞繞的在Django層處理。


          待這一步做完,發(fā)現(xiàn)廣告按鈕依然在,才發(fā)現(xiàn)是藏在JSON Editor中的物件,將JS文件中的對應(yīng)代碼干掉,便沒有廣告了。于是知道前端的內(nèi)容,發(fā)布到互聯(lián)網(wǎng)是會壓縮打包的。


          本機環(huán)境OK后,部署到測試機上,發(fā)現(xiàn)靜態(tài)資源依然不在,這讓我接觸到Nginx。理解Nginx的(極小部分)使用方式,將它搞定,至此優(yōu)化結(jié)束。


          GitHub上的效果圖

          怎么說呢?轉(zhuǎn)行之后,除了主要使用語言(Python)與敲代碼的風(fēng)格(可能可以說是設(shè)計模式吧)不變,我是接觸到許多新技術(shù)的。


          蘋果電腦與Git,是已經(jīng)可以熟練使用的基礎(chǔ)工具。


          HTTP協(xié)議,感覺已經(jīng)快有一個大概框架印在心中。以看書的方式了解全局框架之后會是TCP與IP的學(xué)習(xí)。


          Docker(容器),認識到它是什么并能進行基礎(chǔ)運用。在容器的上層,據(jù)說還有管理容器的集群(K8S)。


          Nginx,是剛接觸的。現(xiàn)階段可以看懂它的基礎(chǔ)配置,能夠稍微改改,但自己寫就還差點意思。


          HTML與JS,似乎已經(jīng)藏在幾個很復(fù)雜的框架后面,要想看到它們,必須先熟悉框架。


          許多的我沒了解到的內(nèi)容在等待我去發(fā)現(xiàn)。


          半年以來,一直在不停地拓展知識廣度,我的Python深度之旅,斷斷續(xù)續(xù)。謹以此篇說明,我的內(nèi)功修煉之路,是在前行的。


          未來還長,未完待續(xù)。


          引用鏈接


          JSON Editor的GitHub地址:https://github.com/json-editor/json-editor


          Django-JSONEditor,有人封裝的Django版本,按照上面的指引,可以很快用起來:https://github.com/nnseva/django-jsoneditor


          在線JSON轉(zhuǎn)義工具:https://c.runoob.com/front-end/53/


          用一年時間如何能掌握 C++ ?:https://www.zhihu.com/question/23933514/answer/26290066

          本文件的批量性操作,Excel催化劑已經(jīng)有非常多的功能,常聽說許多人對Excel催化劑的印象是功能太雜,但試問,不是活在真空世界中做數(shù)據(jù)分析,面對一大堆雜亂的數(shù)據(jù)環(huán)境,沒有足夠“雜”的功能來應(yīng)付,真的可以稱得上數(shù)據(jù)神器么?

          本篇的兩個小功能,處理下一般數(shù)據(jù)采集獲取到的非理想文本數(shù)據(jù):帶unicode字符串的文本和帶html特殊符號的文本。這些功能也是從實際需求中來。為了讓數(shù)據(jù)處理更加得心應(yīng)手,功能仍然不斷新增。

          網(wǎng)頁采集數(shù)據(jù)常有的不完善

          一、html編碼問題

          這里說的網(wǎng)頁采集,當然可以最原始的從網(wǎng)頁上復(fù)制粘貼回來的數(shù)據(jù),更自動化的,就是使用網(wǎng)頁采集工具批量性獲取到的數(shù)據(jù)。

          網(wǎng)頁html文本,有轉(zhuǎn)義字符如: <(小于號<) 、 >(大于號>) 、 (空格)等,這些因為html上有特定的含義,需要轉(zhuǎn)義成其他輸入字符。

          更多的可見下文截圖:


          最終我們還原后,應(yīng)該得到下面的文本才是想要的。

          二、Unicode格式文本

          我們采集到的數(shù)據(jù)中,可能會是以下展示的樣式,非英文、數(shù)字的比如中文,用了Unicode字符表示(\u開頭的)。


          我們需要這樣的格式,才是人閱讀和使用的文本。

          解決辦法

          既然這么大的共性情況,肯定是將它落實到功能上固化,有再次出現(xiàn)時可以立馬解決,這就是Excel催化劑越來越“雜”的由來。

          處理一個文件,你說在線轉(zhuǎn)換下就可以,處理100個、1000個呢,還會這樣去做嗎?在Excel催化劑里,必然是批量性操作最佳使用場合。

          自定義函數(shù)處理Excel單元格內(nèi)容

          如果數(shù)據(jù)已經(jīng)落到Excel的單元格里,在做網(wǎng)頁采集功能時,其實已經(jīng)將此成套的網(wǎng)頁采集相關(guān)會用到的功能都做成了自定義函數(shù)。

          如下的將html的轉(zhuǎn)義字符解碼

          同樣地,Unicode字符串還原為原字符,也有自定義函數(shù)。

          除此以外,還有大量的轉(zhuǎn)換Utf8、從json提取、從xml提取指定元素、Url轉(zhuǎn)碼和還原等一大堆自定義函數(shù)。

          上述自定義函數(shù)使用場景,數(shù)據(jù)源在Excel單元格或提取結(jié)果存儲在Excel單元格,另如果是對整個文件的轉(zhuǎn)換,就是本篇開發(fā)的兩個小功能。

          使用非常簡單,選擇一個或多個待轉(zhuǎn)換的文本文件路徑單元格,當只選擇待轉(zhuǎn)換時,轉(zhuǎn)換后的結(jié)果覆蓋原文件,選擇兩列時,右側(cè)列為轉(zhuǎn)換結(jié)果生成新文本,建議采用新生成文件方式。

          任何覆蓋原始文件的操作均有數(shù)據(jù)風(fēng)險,無法恢復(fù)數(shù)據(jù)初始狀態(tài),不是一個好的科學(xué)的數(shù)據(jù)管理方式。

          結(jié)語

          小功能有大智慧,你能感受到了嗎?盼望Excel催化劑的使用者,會因為其功能的不斷新增而驚喜,因為又有新的繁瑣操作被簡單固化了。

          看到小小的Excel催化劑包含這么多的功能,來應(yīng)對各種數(shù)據(jù)采集、處理、分析各環(huán)節(jié)的痛點,希望催化劑的使用者們,都有慧眼,不用再相信培訓(xùn)機構(gòu)所吹噓的培訓(xùn)一小時,從此不加班的收割式的忽悠大法。

          應(yīng)對功能越來越多,請始終堅守最佳的Excel催化劑使用方法:搜索+筆記,用到時即搜即得,日常追更下文章。寫文章者1小時,讀文章者2分鐘即可。

          路是方向,代碼是時間,知識需積累,經(jīng)驗需摸索。希望對大家有用,有錯誤還望指出。

          HttpResponse 的其他使用方法和注意事項。

        1. 返回 JSON 數(shù)據(jù)
        2. 除了返回字符串和二進制數(shù)據(jù)以外,HttpResponse 還可以返回 JSON 格式的數(shù)據(jù)。這通常用于構(gòu)建 Web API,讓客戶端能夠方便地獲取數(shù)據(jù)并進行處理。

          下面是一個返回 JSON 數(shù)據(jù)的例子:

          import json
          from django.http import HttpResponse
          
          def my_api(request):
              data={'foo': 'bar', 'baz': [1, 2, 3]}
              json_data=json.dumps(data)
              
              response=HttpResponse(json_data, content_type='application/json')
              return response

          在這個例子中,我們首先使用 Python 自帶的 json 模塊將一個字典轉(zhuǎn)換成 JSON 格式的字符串,然后將其作為響應(yīng)內(nèi)容傳遞給 HttpResponse 對象。最后,我們設(shè)置 content_type 參數(shù)為 application/json,表示該響應(yīng)是一個 JSON 格式的數(shù)據(jù)。

          1. 使用 HttpResponseRedirect

          除了 HttpResponse 以外,Django 還提供了其他一些響應(yīng)類來方便我們進行重定向、錯誤處理等操作。其中,HttpRedirect 是用于重定向的響應(yīng)類之一。

          例如,如果我們希望將用戶重定向到另一個 URL 上,可以這樣寫:

          from django.http import HttpResponseRedirect
          
          def my_view(request):
              return HttpResponseRedirect('/another-url/')

          在這個例子中,我們創(chuàng)建了一個 HttpResponseRedirect 對象,并將其目標 URL 設(shè)置為 /another-url/。當客戶端收到該響應(yīng)時,它會自動跳轉(zhuǎn)到該 URL,并展示相應(yīng)的內(nèi)容。

          1. 使用 StreamingHttpResponse

          除了直接返回整個響應(yīng)內(nèi)容以外,Django 還提供了 StreamingHttpResponse 類,可以用于按需生成、傳輸響應(yīng)內(nèi)容。這對于處理大量數(shù)據(jù)或需要逐步生成響應(yīng)內(nèi)容的場景非常有用。

          例如,如果我們希望生成一個包含隨機數(shù)的 CSV 文件并將其作為響應(yīng)傳遞給客戶端,可以這樣寫:

          import csv
          import random
          from django.http import StreamingHttpResponse
          
          def generate_csv():
              yield 'id,value\n'
              
              for i in range(100000):
                  value=random.randint(1, 1000)
                  yield f'{i},{value}\n'
          
          def my_view(request):
              response=StreamingHttpResponse(generate_csv(), content_type='text/csv')
              response['Content-Disposition']='attachment; filename="data.csv"'
              return response

          在這個例子中,我們定義了一個名為 generate_csv 的生成器函數(shù),它會按照 CSV 格式生成一系列隨機數(shù),并逐行生成響應(yīng)內(nèi)容。然后,我們使用 StreamingHttpResponse 類創(chuàng)建一個流式響應(yīng)對象,并將生成器函數(shù)作為參數(shù)傳遞給該對象。最后,我們設(shè)置 content_type 參數(shù)為 text/csv,表示該響應(yīng)是一個 CSV 格式的文件,并使用 Content-Disposition 頭信息告訴客戶端該響應(yīng)應(yīng)該被下載保存。

          1. 注意 XSS 攻擊

          最后,需要特別注意的是,在編寫 HttpResponse 代碼時,我們需要注意防止跨站腳本攻擊(XSS)。XSS 攻擊是指攻擊者通過在網(wǎng)頁中注入惡意腳本來攻擊用戶瀏覽器的一種漏洞。

          為了防止 XSS 攻擊,我們應(yīng)該始終對響應(yīng)內(nèi)容進行轉(zhuǎn)義,并使用相應(yīng)的安全函數(shù)來處理輸入數(shù)據(jù)。例如,在 Django 中,可以使用 escapejs 和 escapeHTML 函數(shù)來分別對 JavaScript 和 HTML 進行轉(zhuǎn)義。

          from django.http import HttpResponse
          from django.utils.html import escape
          
          def my_view(request):
              data=request.GET.get('data')
              escaped_data=escape(data)
              
              response=HttpResponse(f'You entered: {escaped_data}')
              return response

          在這個例子中,我們通過 request.GET.get 方法獲取了一個名為 data 的 GET 參數(shù),并使用 escape 函數(shù)對其進行了 HTML 轉(zhuǎn)義。然后,我們將轉(zhuǎn)義后的數(shù)據(jù)作為響應(yīng)內(nèi)容返回給客戶端。這樣就可以避免惡意腳本被注入到響應(yīng)內(nèi)容中,從而保護用戶的安全。

          另外,Django 還提供了一些安全函數(shù)來幫助我們防止 XSS 攻擊。以下是一些常用的安全函數(shù):

          • escape:對 HTML 進行轉(zhuǎn)義。
          • escapejs:對 JavaScript 進行轉(zhuǎn)義。
          • mark_safe:將字符串標記為安全的 HTML 或 JavaScript 代碼。

          例如,在 Django 模板中,我們可以使用如下方式對變量進行轉(zhuǎn)義:

          <p>{{ my_variable|escape }}</p>

          在這個例子中,我們使用了模板語法中的過濾器,將 my_variable 變量的值進行了 HTML 轉(zhuǎn)義。這樣即使該變量包含惡意腳本,也不會對用戶造成威脅。

          總之,XSS 攻擊是一種非常嚴重的漏洞,我們應(yīng)該時刻注意防范,并采取相應(yīng)的措施來保護用戶的安全。


          主站蜘蛛池模板: 麻豆一区二区在我观看| 人妻aⅴ无码一区二区三区| 无码av人妻一区二区三区四区| 春暖花开亚洲性无区一区二区| 国产爆乳无码一区二区麻豆 | 夜色阁亚洲一区二区三区| 国产精品一区视频| 欧美日本精品一区二区三区 | 色综合视频一区二区三区| 在线免费视频一区| 视频一区二区在线观看| 国产成人无码精品一区二区三区| 久久久久国产一区二区| 国产精品美女一区二区视频| 人妻体体内射精一区二区 | 久久精品无码一区二区三区日韩| 国产婷婷色一区二区三区| 日韩精品一区二三区中文| 成人乱码一区二区三区av| 免费人妻精品一区二区三区| 国产大秀视频一区二区三区 | 福利电影一区二区| 国内精品无码一区二区三区| 无码人妻精品一区二区三区久久| 亚洲国产视频一区| 日韩国产一区二区| 激情内射亚洲一区二区三区| 日本精品视频一区二区| 乱精品一区字幕二区| 国产精品99无码一区二区| 国产精品一区二区三区高清在线 | 国产成人av一区二区三区不卡| 国产午夜精品一区理论片| 日本一区二区三区在线看| 精品一区二区三区中文字幕| 激情综合丝袜美女一区二区| 人妻无码久久一区二区三区免费| 中文字幕亚洲一区二区三区| 无码少妇丰满熟妇一区二区| 无码人妻一区二区三区在线| 国产免费一区二区视频|