2020AV天堂网,午夜色色视频,美女黄片免费观看,欧美黄色电影网站,亚洲人在线

新聞資訊

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

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

時間:2023-11-13 信途科技新聞資訊

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

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

那今天我們就來分享一下,如何使用python去寫一個在線python吧!

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

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

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

pip install Flask

在做我們的工作之前先來了解一下flask框架是怎樣的一個運行機制吧:

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

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

這個文件運行首先我們在沒設(shè)置app文件的情況下,需要先設(shè)置一下,并且開成調(diào)試模式,再去運行:

set FLASK_APP=flaskrun.py

set FLASK_DEBUG=1

flask run

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

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

如果我們想訪問hello方法,這個時候我們就需要加上/hello的路由了:

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

下面我們還要介紹的是報錯機制:

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

flask對于錯誤也有個修飾器,叫@app.errorhandler() ,括號里面跟錯誤代碼,例如,無法找到頁面就可以這么寫:@app.errorhandler(404)

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

ok,flask介紹完畢,我們下面進入正軌了,用subprocess來寫python了。創(chuàng)建一個文件叫:pyol.py

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

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

在這里我們還需要用到臨時文件夾,這個文件夾我們在運行python的時候會用到。

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

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

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

EXEC=sys.executable

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

def decode(s):

try:

return s.decode('utf-8')

except UnicodeDecodeError:

return s.decode('gbk')

在默認(rèn)情況下都是以utf-8的情況下進行編碼。

下面我們需要將用戶寫進來的python代碼寫入文件:

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

下面我們需要在在一個主函數(shù)中定義執(zhí)行方法,我們此時就需要用到subprocess 的check_output方法返回子進程的輸出結(jié)果(check_output 是 父進程等待子進程完成,返回子進程向標(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)

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

我們在flaskrun.py文件里導(dǎo)入以下模塊:

from flask import Flask

from flask import request

from flask import Response

import json

import pyol

我們需要定義一個返回的頭部:

def Response_headers(content):

resp = Response(content)

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

return resp

之后我們來寫post請求的接口:

@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)用剛剛寫的主函數(shù)的執(zhí)行代碼,來執(zhí)行用戶傳入的code,最后將執(zhí)行結(jié)果返回給用戶。

最后我們運行代碼:

if __name__ == '__main__':

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

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

pyol.py

flaskrun.py

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

(flask run):

之后我們打開postman

瞬間就完成了。

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

掃描二維碼推送至手機訪問。

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

轉(zhuǎn)載請注明出處http://www.quickersubmitter.com/xintu/17837.html

相關(guān)文章

鹽都網(wǎng)絡(luò)營銷公司報價的簡單介紹

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 效果付費
    效果付費

    先出效果再付費

  • 極速交付
    極速交付

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

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

    專屬客服對接咨詢

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

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