python - 如何以 django 形式上传 python 脚本并将其用于某些处理?
问题描述
我想通过django表单上传python文件并读取里面可用的函数并使用它进行处理。
到目前为止,我所做的是:从用户那里获取文件并保存在媒体文件夹中。采用函数名称(以便在需要调用函数时可以使用它)
索引.py
<form method="POST" enctype="multipart/form-data" action="/result">Enter function name
{% csrf_token %}
<input type="text" name="functionname"><br>
Upload your .py file here
<input type="file" name="functionfile">
<input type="submit" value="Submit">
</form>
视图.py
def result(request):
if request.method == 'POST':
functionname=request.POST['functionname']
functionfile=request.FILES['functionfile']
fs= FileSystemStorage()
modulename=fs.save(functionfile.name,functionfile)
url=fs.url(modulename)
print(url)
return render(request,'result.html')
我不知道如何在后端使用上传文件的功能
期望的结果是这样的。
例如。example.py 文件包含一个函数
def add(data): p=10+data 返回 p
我上传了一个 example.py 文件
假设在后台我有 d = 100
django 调用 result=add(d)
打印结果
任何参考资料或资源也会有所帮助。
谢谢
解决方案
一个简单的方法是使用 django 中的普通文件上传来获取操作中的数据,使用 docker 在运行 django 应用程序的服务器端启动一个子进程,该子进程中包含 python3。
为什么是码头工人?在 docker 容器内运行恶意代码甚至比在服务器机器本身上运行更安全。
其他想法:您可以通过在线 API 运行代码并获取结果。
参考:https ://github.com/saikat007/Online-Compiler-using-Django-python/blob/master/src/ide/views.py
推荐阅读
- generics - Dagger MutableLiveData 标识符
- sql - 将数组放入 WHERE IN 子句 Ruby on Rails
- sql - 如何获得每个岛屿的第一排和最后一排?
- javascript - 如何在数组Javascript上查找字符串的索引
- javascript - 当我修改 img src 时,jsPDF 不打印 img
- python - 如何在python中使用地理编码器获取邮政编码,提供地理坐标
- express - 将异步等待与猫鼬和快递一起使用
- flutter - 是否可以创建一个函数来使用 FutureBuilder,而不必重复代码?
- javascript - 反应日期选择器过滤日期问题
- c - `typedef` 在这种情况下是什么意思