在我的django应用程序中,我可以使用{{ apps.upload.url }}这样的src="/media/user/image.png"路径提供图像,但现在我想使用urls链接将图像提供给html页面,比如这个urls
settings.py
STATIC_URL = '/static/'
STATICFILES_DIRS=(
os.path.join(BASE_DIR, 'static','static_dirs'),
)
STATIC_ROOT = os.path.join(BASE_DIR, 'static','static_root')
MEDIA_ROOT = os.path.join(BASE_DIR, 'static','media')
MEDIA_URL = ('/media/')models.py
class MyModel(models.Model):
name = models.TextField()
upload = models.ImageField(upload_to=user_directory_path)urls.py
urlpatterns = [
..............
]
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)在html页面中:
<img src="/media/user_1/image.png" >发布于 2018-10-23 06:01:17
看起来您正在使用Django文档中的example中的user_directory_path函数。这会将每个图像保存到基于user.id的文件夹中。您将需要更新MyModel并删除upload_to属性:
class MyModel(models.Model):
name = models.TextField()
upload = models.ImageField()这应该适用于您上传的任何新图像。
您需要的示例还包括一个完全限定的url,而不是相对URL。如果这是您想要的,请将settings中的MEDIA_URL设置为http://127.0.0.1:8000/media/。
如果您的系统中已有镜像,并且您希望在路径中不使用user_x来访问它们,则可能需要:
user_x文件夹移到父文件夹中,并为每个映像设置MyModel.upload的值。如果您有许多图像,则可能需要data migration。https://stackoverflow.com/questions/52937066
复制相似问题