国产免费牲交视频无遮挡_偷偷鲁视频成人免费视频_中文无码 日韩精品_曰韩无码人妻中文字幕

新聞資訊

新聞資訊
首頁(yè) > 新聞資訊 > 正文內(nèi)容

python做網(wǎng)站合適嗎(python做網(wǎng)站快嗎)

時(shí)間:2023-11-13 信途科技新聞資訊

前幾天,一個(gè)朋友提出了一個(gè)建議,如何用python寫(xiě)出python的解釋器,我感覺(jué)這是一個(gè)很好的問(wèn)題,于是就去看看,打算用python寫(xiě)一個(gè)試試,后來(lái)我發(fā)現(xiàn)一個(gè)事情,python里面的subprocess算是一個(gè)很有趣的東西,他可以解釋python自己的代碼,之后就有個(gè)想法了,嘗試用subprocess去寫(xiě)一個(gè)在線運(yùn)行python的網(wǎng)站。

關(guān)注,轉(zhuǎn)發(fā),私信小編“01”即可免費(fèi)領(lǐng)取Python學(xué)習(xí)資料!

那今天我們就來(lái)分享一下,如何使用python去寫(xiě)一個(gè)在線python吧!

首先,這個(gè)東西是結(jié)合python的flask框架來(lái)完成的。先介紹一下flask框架:

Flask也被稱為 “microframework” ,因?yàn)樗褂煤?jiǎn)單的核心,用 extension 增加其他功能。Flask沒(méi)有默認(rèn)使用的數(shù)據(jù)庫(kù)、窗體驗(yàn)證工具。然而,F(xiàn)lask保留了擴(kuò)增的彈性,可以用Flask-extension加入這些功能:ORM、窗體驗(yàn)證工具、文件上傳、各種開(kāi)放式身份驗(yàn)證技術(shù)。

使用終端,運(yùn)行命令提示符CMD,執(zhí)行:

pip install Flask

在做我們的工作之前先來(lái)了解一下flask框架是怎樣的一個(gè)運(yùn)行機(jī)制吧:

首先創(chuàng)建一個(gè)flaskrun.py文件(先寫(xiě)個(gè)demo,后面在這個(gè)基礎(chǔ)上改改,就可以作為網(wǎng)站后端的接口了)

每個(gè)函數(shù)的上面都有修飾器,這個(gè)就代表他的路由,比如說(shuō)@app.route('/'),它就指定了,下面這個(gè)函數(shù)所在的地址是127.0.0.1:5000/(默認(rèn)端口是5000,可以手動(dòng)在run方法中修改)

這個(gè)文件運(yùn)行首先我們?cè)跊](méi)設(shè)置app文件的情況下,需要先設(shè)置一下,并且開(kāi)成調(diào)試模式,再去運(yùn)行:

set FLASK_APP=flaskrun.py

set FLASK_DEBUG=1

flask run

run了之后,服務(wù)會(huì)起了,就會(huì)跳出這樣的界面。

那我們現(xiàn)在就可以去訪問(wèn)路由了,現(xiàn)在我們想訪問(wèn)index方法,我們就輸入路由:

如果我們想訪問(wèn)hello方法,這個(gè)時(shí)候我們就需要加上/hello的路由了:

這樣我們就進(jìn)入了/hello的方法了,每個(gè)方法對(duì)應(yīng)一個(gè)路由,包含最后一個(gè)post也是一樣:

下面我們還要介紹的是報(bào)錯(cuò)機(jī)制:

在路由或者訪問(wèn)數(shù)據(jù)不對(duì)的情況下,我們一般得不到正確的結(jié)果,這個(gè)時(shí)候我們就需要來(lái)看看flask對(duì)于錯(cuò)誤是如何進(jìn)行解釋的了。

flask對(duì)于錯(cuò)誤也有個(gè)修飾器,叫@app.errorhandler() ,括號(hào)里面跟錯(cuò)誤代碼,例如,無(wú)法找到頁(yè)面就可以這么寫(xiě):@app.errorhandler(404)

當(dāng)然還有一些其他的錯(cuò)誤,例如400,500,405等錯(cuò)誤,我們都可以捕捉:

ok,flask介紹完畢,我們下面進(jìn)入正軌了,用subprocess來(lái)寫(xiě)python了。創(chuàng)建一個(gè)文件叫:pyol.py

首先導(dǎo)入要用的包:

import os,sys,subprocess,tempfile,time (敲代碼的時(shí)候建議大家還是分開(kāi)敲,連起來(lái)寫(xiě)雖然也支持,但是事實(shí)上是不規(guī)范的,建議分開(kāi)寫(xiě))

在這里我們還需要用到臨時(shí)文件夾,這個(gè)文件夾我們?cè)谶\(yùn)行python的時(shí)候會(huì)用到。

TempFile = tempfile.mkdtemp(suffix='_test', prefix='python_')

FileNum = int(time.time()*1000)

下面一點(diǎn)比較關(guān)鍵的是,我們需要用到sys模塊里的executable方法來(lái)獲取python編譯器的位置(就是它,才能解讀python代碼),

EXEC=sys.executable

下面我們需要定義編碼方式:

def decode(s):

try:

return s.decode('utf-8')

except UnicodeDecodeError:

return s.decode('gbk')

在默認(rèn)情況下都是以u(píng)tf-8的情況下進(jìn)行編碼。

下面我們需要將用戶寫(xiě)進(jìn)來(lái)的python代碼寫(xiě)入文件:

def write_file(pyname, code):

fpath = os.path.join(TempFile, '%s.py' % pyname)

with open(fpath, 'w', encoding='utf-8') as f:

f.write(code)

print('file path: %s' % fpath)

return fpath

下面我們需要在在一個(gè)主函數(shù)中定義執(zhí)行方法,我們此時(shí)就需要用到subprocess 的check_output方法返回子進(jìn)程的輸出結(jié)果(check_output 是 父進(jìn)程等待子進(jìn)程完成,返回子進(jìn)程向標(biāo)準(zhǔn)輸出的輸出結(jié)果 )

outdata = decode(subprocess.check_output([EXEC, fpath], stderr=subprocess.STDOUT, timeout=5))

將返回結(jié)果輸出:

r['output'] = outdata

最后退出程序并刪除文件:

try:

os.remove(fpath)

except Exception as e:

exit(1)

但是實(shí)際上這個(gè)臨時(shí)文件本身也會(huì)自動(dòng)刪除,這步其實(shí)也算是多余的。這樣我們的python就寫(xiě)好了。下面只需要把它加入路由,把用戶輸入的數(shù)據(jù)以post的方式提交即可。

我們?cè)趂laskrun.py文件里導(dǎo)入以下模塊:

from flask import Flask

from flask import request

from flask import Response

import json

import pyol

我們需要定義一個(gè)返回的頭部:

def Response_headers(content):

resp = Response(content)

resp.headers['Access-Control-Allow-Origin'] = '*'

return resp

之后我們來(lái)寫(xiě)post請(qǐng)求的接口:

@app.route('/run',methods=['POST'])

def run():

if request.method == 'POST' and request.form['code']:

code = request.form['code']

print(code)

jsondata = pyol.main(code)

return Response_headers(str(jsondata))

我們指定他的路由為/run,采用post的方式傳遞數(shù)據(jù),調(diào)用剛剛寫(xiě)的主函數(shù)的執(zhí)行代碼,來(lái)執(zhí)行用戶傳入的code,最后將執(zhí)行結(jié)果返回給用戶。

最后我們運(yùn)行代碼:

if __name__ == '__main__':

app.run(host='0.0.0.0',port=1234,debug=True)

最后完整加上優(yōu)化后代碼如下:

pyol.py

flaskrun.py

我們現(xiàn)在需要借助postman來(lái)看一下run的結(jié)果,首先我們先run一下代碼

(flask run):

之后我們打開(kāi)postman

瞬間就完成了。

之后我們只要寫(xiě)個(gè)前端,把這個(gè)接口給前端調(diào)就大功告成了!

掃描二維碼推送至手機(jī)訪問(wèn)。

版權(quán)聲明:本文由信途科技轉(zhuǎn)載于網(wǎng)絡(luò),如有侵權(quán)聯(lián)系站長(zhǎng)刪除。

轉(zhuǎn)載請(qǐng)注明出處http://macbookprostickers.com/xintu/17837.html

相關(guān)文章

鹽都網(wǎng)絡(luò)營(yíng)銷公司報(bào)價(jià)的簡(jiǎn)單介紹

通過(guò)查詢網(wǎng)絡(luò)信息資料,進(jìn)行市場(chǎng)調(diào)查分析,一種新型高性能過(guò)濾 鹽都19個(gè)老舊小區(qū)改造,這些房子要增值了第二波村莊效果圖。希望鹽城市鹽都區(qū)房產(chǎn)行政主管部門(mén)加強(qiáng)監(jiān)管,公開(kāi)回應(yīng)!來(lái)源鹽阜網(wǎng)事免責(zé)聲明本文內(nèi)容來(lái)...

我國(guó)中小企業(yè)網(wǎng)絡(luò)營(yíng)銷策略研究,中小企業(yè)開(kāi)展網(wǎng)絡(luò)營(yíng)銷的策略論文

二加強(qiáng)網(wǎng)絡(luò)營(yíng)銷知識(shí)企業(yè)領(lǐng)導(dǎo)者必須充分認(rèn)識(shí)到網(wǎng)絡(luò)營(yíng)銷給中小企業(yè)發(fā)展帶來(lái)的機(jī)遇,并將網(wǎng)絡(luò)營(yíng)銷納入企業(yè)的整體營(yíng)銷戰(zhàn)略我們。中小企業(yè)開(kāi)展網(wǎng)絡(luò)營(yíng)銷真的只是一場(chǎng)美夢(mèng)?對(duì)于他們來(lái)說(shuō),如何做好網(wǎng)絡(luò)營(yíng)銷?在如今競(jìng)爭(zhēng)激烈...

甘肅網(wǎng)絡(luò)營(yíng)銷整合,網(wǎng)絡(luò)營(yíng)銷推廣方案整合

梅花網(wǎng)營(yíng)銷服務(wù)商是互聯(lián)網(wǎng)營(yíng)銷者一站式營(yíng)銷資源和傳媒經(jīng)營(yíng)者的作品專業(yè)展示中心 作品 服務(wù)商 需求 免費(fèi)發(fā)布 免費(fèi)入駐營(yíng)銷服務(wù)商,點(diǎn)此入駐服務(wù)商版本 賬戶余額 營(yíng)銷服。甘肅整合營(yíng)銷推廣外包公司,整站網(wǎng)站優(yōu)...

什么是旅游業(yè)網(wǎng)絡(luò)營(yíng)銷,對(duì)旅游業(yè)網(wǎng)絡(luò)營(yíng)銷的看法問(wèn)卷

面對(duì)這種變化的形勢(shì),我國(guó)旅游業(yè)必須加強(qiáng)自身的競(jìng)爭(zhēng)優(yōu)勢(shì),挖掘 這也是旅游企業(yè)做好網(wǎng)絡(luò)營(yíng)銷的一個(gè)方面中秋節(jié)快到了,我該如。旅游景區(qū)網(wǎng)絡(luò)營(yíng)銷,是旅游景區(qū)借助互聯(lián)網(wǎng)科技的發(fā)展,將電腦計(jì) 正是博客的這種性質(zhì)決定...

推廣引流使用規(guī)則(推廣引流是什么意思)

實(shí)體店的引流方法,都有一個(gè)這樣的原則現(xiàn)在的實(shí)體生意,經(jīng)常有人說(shuō),引流太難了,生意越來(lái)越難做了,那么,今天小編就給大家分享一些很實(shí)用的實(shí)體店引流技巧。流量大體上可以分為自然流量和營(yíng)銷推廣這兩種來(lái)源,自然...

杭州微博推廣引流(新浪微博推廣引流注意事項(xiàng))

大家好,今天為大家總結(jié)整理了2021年現(xiàn)在常用和多年前常用的網(wǎng)絡(luò)推廣方法。每個(gè)分類只是列舉個(gè)別平臺(tái),有好的平臺(tái)歡迎留言?,F(xiàn)在跟以前比起來(lái)真的是大變天了,免費(fèi)渠道是屈指可數(shù),付費(fèi)渠道鋪天蓋地,一起來(lái)看看...

現(xiàn)在,非常期待與您的又一次邂逅

我們努力讓每一次邂逅總能超越期待

  • 效果付費(fèi)
    效果付費(fèi)

    先出效果再付費(fèi)

  • 極速交付
    極速交付

    響應(yīng)速度快,有效節(jié)省客戶時(shí)間

  • 1對(duì)1服務(wù)
    1對(duì)1服務(wù)

    專屬客服對(duì)接咨詢

  • 持續(xù)更新
    持續(xù)更新

    不斷升級(jí)維護(hù),更好服務(wù)用戶