django mysql,如何 为不同app,第三级目录的app 设置文件存储的地址
时间: 2024-01-22 21:03:45 浏览: 24
对于 Django 和 MySQL,你可以使用 Django ORM 来管理数据库,并使用 Django 自带的文件存储系统来存储文件。
对于不同的 app,您可以在各自的 app 目录中创建一个名为 `storage.py` 的文件,然后在其中定义一个文件存储类。例如,对于名为 `myapp` 的 app,您可以创建一个名为 `myapp/storage.py` 的文件,然后在其中定义一个名为 `MyAppStorage` 的文件存储类。
在 `MyAppStorage` 类中,您可以定义文件存储的根目录,例如:
```python
from django.core.files.storage import FileSystemStorage
class MyAppStorage(FileSystemStorage):
def __init__(self, location=None, base_url=None):
if location is None:
location = '/path/to/myapp/storage'
super().__init__(location, base_url)
```
在这个例子中,文件存储的根目录被设置为 `/path/to/myapp/storage`。如果您想要不同的 app 使用不同的根目录,只需要在各自的 app 的 `storage.py` 文件中定义不同的 `MyAppStorage` 类即可。
然后,在您的 Django 项目的 `settings.py` 文件中,您可以为每个 app 指定一个文件存储类。例如:
```python
MYAPP_STORAGE_CLASS = 'myapp.storage.MyAppStorage'
MYOTHERAPP_STORAGE_CLASS = 'myotherapp.storage.MyOtherAppStorage'
DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage'
FILE_UPLOAD_HANDLERS = [
'django.core.files.uploadhandler.MemoryFileUploadHandler',
'django.core.files.uploadhandler.TemporaryFileUploadHandler',
]
```
在这个例子中,`MYAPP_STORAGE_CLASS` 和 `MYOTHERAPP_STORAGE_CLASS` 变量分别指定了 `myapp` 和 `myotherapp` 使用的文件存储类,而 `DEFAULT_FILE_STORAGE` 变量则指定了默认的文件存储类。注意,`DEFAULT_FILE_STORAGE` 变量必须指定一个合法的文件存储类,否则 Django 将无法正确地处理文件上传和文件存储。