我有一个与内置模块冲突的模块.例如,在中myapp.email定义的模块myapp/email.py.
我可以myapp.email在我的代码中的任何地方引用而没有问 但是,我需要从我的电子邮件模块中引用内置电子邮件模块.
# myapp/email.py
from email import message_from_string
Run Code Online (Sandbox Code Playgroud)
它只发现自己,因此提出了一个ImportError,因为myapp.email没有message_from_string方法. import email我尝试时会导致同样的问题email.message_from_string.
有没有本地支持在Python中执行此操作,或者我是否仍然将我的"电子邮件"模块重命名为更具体的内容?
我正在使用AWS,我的应用程序中会有不同的存储桶.我也在使用Django-Storages.有没有办法指定我要将文件上传到哪个存储桶(例如,作为Save()函数中的参数或其他什么?)
我看到这个Django - 导入storages.backends时出错,但我不明白它应该如何使用?!
谢谢!
在settings.py我有:
STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
AWS_ACCESS_KEY_ID = 'xxxxxxxxxxxxx'
AWS_SECRET_ACCESS_KEY = 'xxxxxxxxxxxxx'
AWS_STORAGE_BUCKET_NAME = 'static.mysite.com'
Run Code Online (Sandbox Code Playgroud)
这指向我的S3存储桶static.mysite.com并且在我这样做时工作正常manage.py collectstatic,它将所有静态文件上传到我的存储桶.不过,我还有一个水桶,我用不同的目的,想如果我有这样的模型在网站的某些地区使用,例如:
class Image(models.Model):
myobject = models.ImageField(upload_to='my/folder')
Run Code Online (Sandbox Code Playgroud)
现在Image.save()调用它时,它仍会将文件上传到S3存储桶中AWS_STORAGE_BUCKET_NAME,但是我希望它Image.save()指向另一个S3存储桶.任何清洁这样的方式?我不想改变settings.py运行时间,也不想实现任何违反django关键原则的做法,即具有可插入的易于更改的后端存储.