DJango文件系统。从错误的位置读取url

2024-05-23 18:20:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含ImageField和FileField的表单

文件上传到正确的文件夹,但是当我试图检索显示在屏幕上的url时,它给了我一个错误的位置

    fs_img = FileSystemStorage(location='media/images/')
    imageName = fs_img.save(image.name,image)
    uploaded_image_url = fs_img.url(imageName)

例如,图像上传为媒体/图像/档案_文件段 但是,当我试图检索刚刚保存的文件的url时,为了将位置保存到数据库,它会将其作为媒体/配置文件检索_文件段这是不存在的

我知道FileSystemStorage使用的默认位置是MEDIA\u ROOT,这似乎就是fs_图片网址(imageName)正在使用 在哪里

^{pr2}$

而且,我在模型.py使用“上载到”设置的文件无效

image = models.ImageField(
    upload_to = 'media/images/',
    default='media/no_image.png'
)

如何获得fs_图片网址(imageName)返回正确的URL以便将其保存到数据库中?在


Tags: 文件图像image数据库urlimg图片fs
2条回答

首先检查映像是否正在保存该介质文件夹。如果只保存服务图像的问题意味着您需要在项目URL中添加这行代码

from django.conf.urls import url, include

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    url(r'^admin/', admin.site.urls),
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

因此,每当您试图为图像提供服务时,django将自动附加url并提供静态数据。如需进一步参考,请使用this。让我知道这是否有效

我想我已经解决了如下问题:

设置.py

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

FS_IMAGE_UPLOADS = os.path.join(MEDIA_ROOT,'images/')
FS_IMAGE_URL = os.path.join(MEDIA_URL,'images/')

FS_DOCUMENT_UPLOADS = os.path.join(MEDIA_ROOT,'documents/')
FS_DOCUMENT_URL = os.path.join(MEDIA_URL,'documents/')

视图.py

^{pr2}$

上传的_image_url上传的_document_url值现在正确返回

相关问题 更多 >