内存中的django上传文件没有以开头的属性



我正在编写一个rest api,在其中传递一个python文件。我想获取python文件,从中导入一个函数并使用它。

我可以用这个读取文件:custom_file = request.FILES['custom']。如果我打印出它的类型,我会得到<class 'django.core.files.uploadedfile.InMemoryUploadedFile'>.这是一个名为test.py的python文件。`我想从那个文件中导入一个函数,但似乎做不好。以下是我正在尝试的:

mod = import_module(custom_file)
new_func = getattr(custom_file, file_name)
df = new_func(json_file)

我认为我应该传递给import_module的内容之间存在混淆,它需要一个文件字符串,但我将文件作为请求传递给我的API。我该怎么做?

我已经尝试过使用上面的命令在没有请求的情况下加载该函数(如果我只是把它放在同一个目录中,没有rest api(,它就可以工作了。所以我只需要弄清楚如何从请求调用中访问正确的信息。

执行任意代码通常是一个糟糕的想法,因为它将拥有完全权限。

也就是说,您首先必须将文件保存到磁盘中。我会使用tempfile.mkdtemp(指向文档的链接(在那里创建一个临时文件夹,并将其保存在那里。然后将其作为模块导入(有关如何导入的更多信息,请参阅此问题(。

最新更新