django实现简单的代码编辑器

  • 环境准备
    • 这里介绍项目的路径

环境准备

1.首先安装python,python安装详情这个可以查看官网的教程进行安装
2.安装python后,再通过命令pip install django安装django,django安装完再进行创建项目(官网可查看安装和创建app步骤,这里不细说),然后再cmd里再输入命令:pip install djangorestframework安装djangorestframework

这里介绍项目的路径

如下图(我们先在项目里创建一个Use_cases的app,然后创建一个urls.py
的文件和serializers.py文件,然后我们在views.py文件里编写我们的后端代码,serializers.py编写表单验证逻辑,models定义模块):

  1. models.py的代码如下:
from django.db import models
from django.core import validators#验证器
#Create your models here.
class UseTestOrm(models.Model):#签名加密配置class Meta:db_table = 'usertestorm'ordering = ["-data_time"]judge_edit = models.CharField(max_length=10, null=True)  # 判断是否编辑的用例http_file_py_name = models.TextField(null=True, default="")  # py代码
  1. serializers.py文件代码如下
 import refrom apps.HttprunerMan.Use_cases.models import UseTestOrm#导入环境ormclass PythonSeriaklizers(serializers.ModelSerializer):#python文件运行序列化http_file_py_name = serializers.CharField(error_messages={"required": "代码不能为空!", "blank": "代码不能为空!"})judge_edit = serializers.CharField(required=False, allow_blank=True, max_length=10,error_messages={"max_length": "judge_edit参数不能超过10个字符串!"}, default="yes")class Meta:model = UseTestOrmfields=('http_file_py_name','judge_edit')def validate_http_file_py_name(self,value):#对用例id表单验证os_list="import(\s+)os"#sys_list="import(\s+)sys"subprocess_list = "import(\s+)subprocess"true_list = "while(\s+)True"#or(re.findall(true_list,value)!=[])#or(re.findall(sys_list,value)!=[])if (re.findall(os_list,value)!=[])or(re.findall(subprocess_list,value)!=[])or("exec" in value)or("pickle" in value):raise ValidationError("代码上存在非法模块,请去掉os、exec、pickle、subprocess模块和while True方法")return value
  1. views.py代码如下:
import subprocess#终端打印
import time
from django.conf import settings
from apps.HttprunerMan.Use_cases.serializers import PythonSeriaklizers
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
class Test_python_view(APIView):#运行python代码def post(self,request):#post请求serializer = PythonSeriaklizers(data=request.data)if serializer.is_valid():  # 表单验证通过执行下面代码with transaction.atomic():  # 创建事物,保证py文件运行成功和py文件运行和删除成功,否则就回滚save_is = transaction.savepoint()all_obj,file_name="",""try:token1 = request.data.get("token")if token1 == settings.SECRET_KEY:#验证传上来的token是否与django的密钥一直,这样保证安全问题http_file_py_name= serializer.data.get("http_file_py_name")#获取代码file_name = settings.MEDIA_ROOT + '\\' + str(int(time.time()))+".py"#生成py文件f = open(file_name, "bw")#打开生成的py文件#下面for循环把读取的数据,把读取的数据写到创建的py文件for i in '{}'.format(str(http_file_py_name)):f.write(i.encode())f.close()#读取完成关闭文件obj = subprocess.Popen('python {}'.format(file_name), shell=True, stdout=subprocess.PIPE,stderr=subprocess.PIPE)#这里是运行py文件的代码,stdout是获取运行该命令的正确信息,stderr是获取错误信息try:all_obj += obj.stdout.read().decode('gbk') + "\r\n" + obj.stderr.read().decode('gbk')#把获取的正确和错误信息进行组合except Exception as e:return Response({"all_result": str(e), "message": "成功", "code": "200"})#这里如果出现异常进行返回结果os.remove(file_name)#删除该py文件这样防止产生垃圾文件return Response({"all_result": all_obj, "message": "成功", "code": "200"})else:#如果token校验错误就打印下面代码return Response(data={"message": "token参数错误或为空!", "code": 400},status=status.HTTP_400_BAD_REQUEST)except Exception as e:os.remove(file_name)transaction.savepoint_rollback(save_is)return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
  1. urls.py文件如下定义
from django.urls import path,re_path
from apps.HttprunerMan.Use_cases.views import Test_python_view,
from rest_framework.routers import DefaultRouter#导入这个模块app_name="Use_cases"
urlpatterns=[path("Test_python_view/",Test_python_view.as_view()),#python代码测试]
  1. 项目里的urls.py文件代码:
from django.contrib import admin
from django.urls import path,include
from django.conf.urls.static import static
from django.conf import settings
urlpatterns = [path('usetest/',include("apps.HttprunerMan.Use_cases.urls")),]
  1. settings.py文件需要在INSTALLED_APPS里添加app路径如下

  2. 最终使用python manage.py runserver命令启动项目,项目效果图如下

django+djangorestframework开发代码编辑器相关推荐

  1. Ace,CodeMirror 和 Monaco:Web 代码编辑器的对比

    原文链接 Replit - Ace, CodeMirror, and Monaco: A Comparison of the Code Editors You Use in the Browser 我 ...

  2. python django开发工具_利用pyCharm编辑器创建Django项目开发环境-python开发工具第一篇...

    [前置说明] 1.django环境与python对应关系: Django version Python versions 1.11 2.7, 3.4, 3.5, 3.6, 3.7 (added in ...

  3. pythondjangoweb典型模块开发实战 pdf下载_胡阳《Django企业开发实战高效Python Web框架指南》PDF及代码...

    Python社区中的框架Django 的定位是企业级开发框架,全功能 Web开发框架,少代码快速开发 Web应用.从开发速度还是上线后新功能的迭代,Django 都能很好地满足需求. 学完 Pytho ...

  4. python软件包自带的集成开发环境-Python的10大集成开发环境和代码编辑器(指南)...

    使用IDLE或者Python Shell来编写Python是非常适合于简单程序的,但是这些工具往往将大型的编程项目变成一个个充满绝望和沮丧的"坑".使用一款集成开发环境甚至是一款好 ...

  5. python自带的集成开发环境是什么-Python的10大集成开发环境和代码编辑器(指南)...

    使用IDLE或者Python Shell来编写Python是非常适合于简单程序的,但是这些工具往往将大型的编程项目变成一个个充满绝望和沮丧的"坑".使用一款集成开发环境甚至是一款好 ...

  6. 开发人员眼中最好的代码编辑器是谁?

    摘要:对开发人员来讲,开发工具就好比战场上的"兵器",不同领域的开发人员他们所使用的"兵器"也不完全相同,本文从友好性.功能性.扩展等多方面总结了最受开发人员欢 ...

  7. 在线代码编辑器 CodeMirror 配置说明 - javascript开发的代码语法高亮显示引擎

    CodeMirror是一款在线的支持语法高亮的代码编辑器.官网: http://codemirror.net/ 下载后,解压开得到的文件夹中,lib下是放的是核心库和核心css,mode下放的是各种支 ...

  8. dw上的php代码如何预览在浏览器_13个面向开发人员的JavaScript代码编辑器和IDE

    根据知乎的说法,JavaScript(JS)是一种解释性的计算机编程语言.它最初是作为Web浏览器的一部分实现的,这样客户端脚本就可以与用户交互.控制浏览器.异步通信以及更改显示的文档内容. 在本文中 ...

  9. au如何关闭预览编辑器_在线IDE开发入门之从零实现一个在线代码编辑器

    前言 3年前在AWS re:Invent 大会上AWS 宣布推出 Cloud9, 用于在云端编写.运行和调试代码,它可以直接运行在浏览器中,也就是传说中的 Web IDE.3年后的今天随着国内云计算的 ...

  10. code vs 集成tfs_10大Python集成开发环境和代码编辑器

    支持Python的通用编辑器和集成开发环境 Eclipse + PyDev 类别:集成开发环境 网址:www.eclipse.org Python工具:PyDev, www.pydev.org 优点: ...

最新文章

  1. emWin GUIBuilder V5.40a 无法保存文件问题解决方案
  2. SSH: 使用ssh推送github代码
  3. 【4】青龙面板系列教程之QQ通知机器人XDD-plus安装
  4. 【运筹学】线性规划 人工变量法 ( 人工变量法案例 | 第二次迭代 | 中心元变换 | 检验数计算 | 最优解判定 | 选择入基变量 | 选择出基变量 )
  5. 写给初学者的Tensorflow介绍
  6. ansys怎么合并体_骨质增生是由什么原因造成的?膝盖骨质增生是怎么造成的?...
  7. Anaconda简介及其下载 安装 配置 使用 卸载
  8. ZooKeeper(二)ZooKeeper能做什么?
  9. 根据时间戳生成编号_VLOOKUP函数制作产品报价单,能自动生成价格
  10. mysql数据没有同步更新_MySQL数据库主从没有同步的两种解决方案
  11. 【游戏开发】免费开源游戏引擎
  12. 基于PCNN的图像增强matlab代码
  13. 聚焦基因组学研究,JMP参加第七届国际统计遗传学与基因组学高峰论坛
  14. 幼儿园网络图怎么绘制_幼儿园主题网络图的绘制要注意什么
  15. 国家区块链漏洞库2020年区块链安全态势感知报告
  16. pygame 精灵精灵组
  17. 微信小程序评分功能(一)
  18. Python日常小技巧(持续更新中)
  19. 5-3中央处理器-数据通路的功能和基本结构
  20. 在做竞品分析时遇到的一些坑

热门文章

  1. 2.2 反相放大器、高输入电阻反相放大器、反相高压放大器
  2. 为什么看起来不是很复杂的网站,淘宝、腾讯却需要大量顶尖高手来开发?
  3. gmail附件调用_如何将Gmail附件保存到Google云端硬盘
  4. 大气污染治理行业有哪些特点?
  5. 微信 云端搭建小程序概述
  6. 为啥互联网都使用缓存
  7. 【Python】详解 collections.Counter
  8. win10系统安装virtualbox虚拟机win7系统过程记录
  9. ASP.NET显示农历时间
  10. 20 周年会上的这条视频,看哭了 10 万阿里人