首页 > 解决方案 > 如何以 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')

我不知道如何在后端使用上传文件的功能

期望的结果是这样的。

  1. 例如。example.py 文件包含一个函数

    def add(data): p=10+data 返回 p

  2. 我上传了一个 example.py 文件

  3. 假设在后台我有 d = 100

  4. django 调用 result=add(d)

  5. 打印结果

任何参考资料或资源也会有所帮助。

谢谢

标签: pythonpython-3.xdjangoformsdjango-forms

解决方案


一个简单的方法是使用 django 中的普通文件上传来获取操作中的数据,使用 docker 在运行 django 应用程序的服务器端启动一个子进程,该子进程中包含 python3。

为什么是码头工人?在 docker 容器内运行恶意代码甚至比在服务器机器本身上运行更安全。

其他想法:您可以通过在线 API 运行代码并获取结果。

参考:https ://github.com/saikat007/Online-Compiler-using-Django-python/blob/master/src/ide/views.py


推荐阅读