Django 图片上传成功,url 已写入数据库,但没有图片显示上传目标文件夹
Django image upload succeeds with url written to DB but no image shows upload target folder
我在 Django 中有表单
class BusinessForm(forms.Form):
name = forms.CharField( required = True,
max_length=MAX_NAME_LENGTH,
widget=forms.TextInput(attrs={'placeholder': 'e.g Boston Market'}))
image = forms.ImageField()
属于这个型号
class Business(models.Model):
""" Describes Bussines data type """
name = models.CharField(max_length=BUS_NAME_LENGTH)
img = models.ImageField( upload_to = UPLOAD_TO )
其中 UPLOAD_TO = 'business/images'
并且在 settings.py 中我将媒体根定义如下
# Media Root - uploaded images
MEDIA_ROOT = '/uploads/'
在我通过表单上传后,在数据库中我看到了以下网址
但是在文件系统中我没有看到该文件,我在本地主机上的测试环境中 运行。我正在使用 Windows OS.
这是为什么?我必须对文件夹设置一些权限吗?如果是这样,我还如何确保在部署时它能在生产环境中运行?谢谢。
发生这种情况是因为 MEDIA_URL
和 MEDIA_ROOT
没有正确配置。将以下代码放入您的 settings.py
MEDIA_URL = '/uploads/'
MEDIA_ROOT = os.path.join(BASE_DIR, "uploads")
备注
如果您的设置文件中未定义 BASE_DIR
,请将以下代码放在文件顶部:
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
我在 Django 中有表单
class BusinessForm(forms.Form):
name = forms.CharField( required = True,
max_length=MAX_NAME_LENGTH,
widget=forms.TextInput(attrs={'placeholder': 'e.g Boston Market'}))
image = forms.ImageField()
属于这个型号
class Business(models.Model):
""" Describes Bussines data type """
name = models.CharField(max_length=BUS_NAME_LENGTH)
img = models.ImageField( upload_to = UPLOAD_TO )
其中 UPLOAD_TO = 'business/images'
并且在 settings.py 中我将媒体根定义如下
# Media Root - uploaded images
MEDIA_ROOT = '/uploads/'
在我通过表单上传后,在数据库中我看到了以下网址
但是在文件系统中我没有看到该文件,我在本地主机上的测试环境中 运行。我正在使用 Windows OS.
这是为什么?我必须对文件夹设置一些权限吗?如果是这样,我还如何确保在部署时它能在生产环境中运行?谢谢。
发生这种情况是因为 MEDIA_URL
和 MEDIA_ROOT
没有正确配置。将以下代码放入您的 settings.py
MEDIA_URL = '/uploads/'
MEDIA_ROOT = os.path.join(BASE_DIR, "uploads")
备注
如果您的设置文件中未定义 BASE_DIR
,请将以下代码放在文件顶部:
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))