从文件字段运行.py文件



我有一个包含文件字段的模型。我用它上传.py文件。

models.py

class FileModel(models.Model):
    file = models.FileField(null = True, blank = True, upload_to = 'files')
    file_name = models.CharField(max_length=200)

我想检索上传的文件并在视图中执行代码。

views.py

def get_return_from_file(request):
    post = FileModel.objects.get(file_name__iexact='example_name')
    a = post.file.read()
    print (a)

示例上传python文件'example_name'

def main():
    return 'hello world'
if __name__ == "__main__":
    main()

但是,这返回

b'def main(): n返回'Hello world' n如果 name ==" main ": n main()'

而不是

'Hello World'

如何在文件字段中执行代码并访问其返回的值,而不仅仅是将其读取为字符串?

谢谢!

示例文件:

def main():
    return 'hello world'
if __name__ == "__main__":
    print(main())

views.py

def get_return_from_file(request):
    post = FileModel.objects.get(file_name__iexact='example_name')
    a = post.file.read()
    exec(a)

使用eval()进行单行表达式。

eval()仅返回表达结果。

使用 exec()进行语句,任何有效的python代码块。

文档:https://docs.python.org/3/library/functions.html

最新更新