这是我的models.py:
def get_profileImage_file_path(instance, filename):
return os.path.join('%s/uploadedPhotos/profileImages' % instance.user_id, filename)
class UserExtended(models.Model):
user = models.OneToOneField(User)
profileImage = models.ImageField(upload_to=get_profileImage_file_path, default='/static/images/myProfileIcon.png')
现在,我希望默认图像(在我的静态文件夹中)保存到
中给出的路径get_profileImage_file_path
功能。在我的settings.py中,我将media_root和media_URL定义为:
MEDIA_ROOT = '/home/username/Documents/aSa/userPhotos'
MEDIA_URL = '/media/'
出于某种原因,当我在模板和模板中传递用户对象时,如果我这样做:
<img class='profilePic' src="{{ user.userextended.profileImage.url }}" height='120px' alt="" />
没有图像显示,当我打开chrome中的'inspect element'部分时,它会出现404错误:
GET http://127.0.0.1:8000/home/username/Documents/djcode/aS/aSa/static/images/myProfileIcon.png 404 (NOT FOUND)
即使这是图像的正确文件路径。 (我也不确定它为什么要提供整个文件路径,是不是它应该从/ static /开始?即使我'查看源',整个网址都在那里。)我该怎样做到这一点位于静态文件夹中的默认图像上传到
中提供的路径get_profileImage_file_path
功能
答案 0 :(得分:2)
一般情况下,我们对媒体使用如下配置:
BASE_DIR = dirname(dirname(abspath(__file__)))
MEDIA_ROOT_DIR = 'media'
MEDIA_ROOT = normpath(join(BASE_DIR, MEDIA_ROOT_DIR))
MEDIA_URL = '/media/'
因为,开发目的设定:
DEBUG = True
在urls.py中添加以下内容:
from django.conf import settings
from django.conf.urls.static import static
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
再次上传图片并验证图片,现在应该可以使用。