我有一个包含FileField的模型。我用它上传.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如果 name ==“ main ”:\ n main()'则返回'hello world'\ n >
代替
“ hello world”
如何执行FileField中的代码并访问它的返回值,而不是仅仅将其读取为字符串?
谢谢!
答案 0 :(得分:0)
示例文件:
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)
答案 1 :(得分:-1)
将eval()
用于单行表达式。
eval()
仅返回表达式结果。
将exec()
用于语句,任何有效的python代码块。