我有一个包含文件字段的模型。我用它上传.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