首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何提供图片urls usign django

如何提供图片urls usign django
EN

Stack Overflow用户
提问于 2018-10-23 04:10:35
回答 1查看 132关注 0票数 0

在我的django应用程序中,我可以使用{{ apps.upload.url }}这样的src="/media/user/image.png"路径提供图像,但现在我想使用urls链接将图像提供给html页面,比如这个urls

settings.py

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
class MyModel(models.Model):
    name = models.TextField()
    upload = models.ImageField(upload_to=user_directory_path)

urls.py

代码语言:javascript
运行
复制
urlpatterns = [
 ..............
]
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

在html页面中:

代码语言:javascript
运行
复制
<img  src="/media/user_1/image.png" >
EN

Stack Overflow用户

发布于 2018-10-23 06:01:17

看起来您正在使用Django文档中的example中的user_directory_path函数。这会将每个图像保存到基于user.id的文件夹中。您将需要更新MyModel并删除upload_to属性:

代码语言:javascript
运行
复制
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
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52937066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档