新闻资讯

新闻资讯
首页 > 新闻资讯 > 正文内容

python做网站怎么样(python做网站用什么框架)

时间:2023-11-29 信途科技新闻资讯

前几天,一个朋友提出了一个建议,如何用python写出python的解释器,我感觉这是一个很好的问题,于是就去看看,打算用python写一个试试,后来我发现一个事情,python里面的subprocess算是一个很有趣的东西,他可以解释python自己的代码,之后就有个想法了,尝试用subprocess去写一个在线运行python的网站。

关注,转发,私信小编“01”即可免费领取Python学习资料!

那今天我们就来分享一下,如何使用python去写一个在线python吧!

首先,这个东西是结合python的flask框架来完成的。先介绍一下flask框架:

Flask也被称为 “microframework” ,因为它使用简单的核心,用 extension 增加其他功能。Flask没有默认使用的数据库、窗体验证工具。然而,Flask保留了扩增的弹性,可以用Flask-extension加入这些功能:ORM、窗体验证工具、文件上传、各种开放式身份验证技术。

使用终端,运行命令提示符CMD,执行:

pip install Flask

在做我们的工作之前先来了解一下flask框架是怎样的一个运行机制吧:

首先创建一个flaskrun.py文件(先写个demo,后面在这个基础上改改,就可以作为网站后端的接口了)

每个函数的上面都有修饰器,这个就代表他的路由,比如说@app.route('/'),它就指定了,下面这个函数所在的地址是127.0.0.1:5000/(默认端口是5000,可以手动在run方法中修改)

这个文件运行首先我们在没设置app文件的情况下,需要先设置一下,并且开成调试模式,再去运行:

set FLASK_APP=flaskrun.py

set FLASK_DEBUG=1

flask run

run了之后,服务会起了,就会跳出这样的界面。

那我们现在就可以去访问路由了,现在我们想访问index方法,我们就输入路由:

如果我们想访问hello方法,这个时候我们就需要加上/hello的路由了:

这样我们就进入了/hello的方法了,每个方法对应一个路由,包含最后一个post也是一样:

下面我们还要介绍的是报错机制:

在路由或者访问数据不对的情况下,我们一般得不到正确的结果,这个时候我们就需要来看看flask对于错误是如何进行解释的了。

flask对于错误也有个修饰器,叫@app.errorhandler() ,括号里面跟错误代码,例如,无法找到页面就可以这么写:@app.errorhandler(404)

当然还有一些其他的错误,例如400,500,405等错误,我们都可以捕捉:

ok,flask介绍完毕,我们下面进入正轨了,用subprocess来写python了。创建一个文件叫:pyol.py

首先导入要用的包:

import os,sys,subprocess,tempfile,time (敲代码的时候建议大家还是分开敲,连起来写虽然也支持,但是事实上是不规范的,建议分开写)

在这里我们还需要用到临时文件夹,这个文件夹我们在运行python的时候会用到。

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

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

下面一点比较关键的是,我们需要用到sys模块里的executable方法来获取python编译器的位置(就是它,才能解读python代码),

EXEC=sys.executable

下面我们需要定义编码方式:

def decode(s):

try:

return s.decode('utf-8')

except UnicodeDecodeError:

return s.decode('gbk')

在默认情况下都是以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

下面我们需要在在一个主函数中定义执行方法,我们此时就需要用到subprocess 的check_output方法返回子进程的输出结果(check_output 是 父进程等待子进程完成,返回子进程向标准输出的输出结果 )

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

将返回结果输出:

r['output'] = outdata

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

try:

os.remove(fpath)

except Exception as e:

exit(1)

但是实际上这个临时文件本身也会自动删除,这步其实也算是多余的。这样我们的python就写好了。下面只需要把它加入路由,把用户输入的数据以post的方式提交即可。

我们在flaskrun.py文件里导入以下模块:

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的方式传递数据,调用刚刚写的主函数的执行代码,来执行用户传入的code,最后将执行结果返回给用户。

最后我们运行代码:

if __name__ == '__main__':

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

最后完整加上优化后代码如下:

pyol.py

flaskrun.py

我们现在需要借助postman来看一下run的结果,首先我们先run一下代码

(flask run):

之后我们打开postman

瞬间就完成了。

之后我们只要写个前端,把这个接口给前端调就大功告成了!

扫描二维码推送至手机访问。

版权声明:本文由信途科技转载于网络,如有侵权联系站长删除。

转载请注明出处https://www.xintukeji.cn/xintu/14041.html

相关文章

深圳专业做网站设计(深圳网站设计制作公司)

深圳龙岗专业网站制作公司,自己如何制作外贸网站?网络时代,外贸建站的重要性不言而喻,随着外贸网站的不断增多,竞争日益激烈,想要随便建一个网站就看不到效果。如果你想建立一个对外商有吸引力的营销外贸网站,...

网络营销的策略包括价格策略,网络营销的策略包括价格策略对错

网络营销价格策略包括 56万字 7532人读过, 连载 网络营销价格策略包括 网络营销价格策略包括 标签 化学习题 医。网络营销之价格策略 价格策略价格的多少只是厂家贴上的一个标签而已,但不同价格的标...

哈密天猫引流推广(天猫店铺怎么推广和引流)

近日,在鄯善(吐哈)750千伏输变电工程现场,作业人员正对引流线间隔棒进行检查、调整。 (通讯员甘星摄)乌鲁木齐晚报全媒体讯(记者王艳红)3月29日20时30分,随着鄯善(吐哈)750千伏变电站1号主...

网络推广引流如何上广告(网络推广引流方法)

1丶 免 费 资源 推广法。 给其他 人免 费的 服务 , 比如上面 准备 的素材丶微信营销 资料等等 。 要 让 自己提 供 的内容, 成为 其他 人 必 不可 缺 的营销素材。时久 了, 关注你...

金湾网络营销课程,天津天狮网络营销课程

Photoshop是网络营销电子商务师互联网营销从业者IT精英创业者就业者的敲门砖必备技能!课程特色 实用 实惠 实。酒店网络营销与推广讲师穆林课程简介本课程主要讲解酒店应该如何在网络上实施推广,实施...

生产网络营销方案,网络营销策划方案例文

网络营销方案策划书范文6篇doc,网络营销方案策划书范文6篇 网络营销具有巨大发展潜力,企业和消费者对其寄予厚望的原因在于网络营销相对传统营销方。先进的生产技术努力学习国外先进经验,积极引进和研发先进...

现在,非常期待与您的又一次邂逅

我们努力让每一次邂逅总能超越期待

  • 效果付费
    效果付费

    先出效果再付费

  • 极速交付
    极速交付

    响应速度快,有效节省客户时间

  • 1对1服务
    1对1服务

    专属客服对接咨询

  • 持续更新
    持续更新

    不断升级维护,更好服务用户