Django将单词添加到图像url
Posted
技术标签:
【中文标题】Django将单词添加到图像url【英文标题】:Django adding words to image url 【发布时间】:2021-11-08 06:46:20 【问题描述】:我想在我的模板上加载图片:
<img src=" item.pic ">
它有时可以正常工作,但是一旦我从视图开始执行此操作,它会自动将该视图的路径添加到我的图像 src 中,从而导致图像无法加载。
我希望它是
src="images/item.jpg"
例如,但由于不同的观点,它最终可能会成为
"view1/images/item.jpg"
或
"anotherview/images/item.jpg"
导致 Django 无法找到图像。有没有办法对其进行编码,以便视图名称不会添加到 src 中?
【问题讨论】:
【参考方案1】:您应该使用绝对 URL,您可以这样做:
<img src="<strong>/</strong> item.pic ">
通常如果这是FileField
(或ImageField
,它是FileField
的子类),您可以让Django 确定URL:
<img src=" item.pic<strong>.url</strong> ">
在这种情况下,Django 将使用MEDIA_URL
[Django-doc] 并提供这些文件。在生产中,你需要配置一个像 Apache、nginx 等的网络服务器;或让内容交付网络 (CDN) 提供这些文件。
【讨论】:
感谢您的回答!添加 .url 似乎并没有解决问题,因为它仍然使 url 与图像 url 中的路径保持一致。此外,我的设置中有“MEDIA_URL = '/media/'”,但图片网址中没有“媒体”。有没有一种方法可以让图像 url 类似于“media/images/item.jpg”,而不管我要经过哪条路径?目前路径名被添加到我的图片 url 前面,而 Django 找不到图片。 @VaultDweller:您是否将媒体网址添加到urls.py
?
@VaultDweller:见docs.djangoproject.com/en/3.2/howto/static-files/…
是的,我做到了。我没有收集静态文件,因为我知道本地服务器不需要。
哇,这听起来很奇怪,但是使用 item.pic.url 格式开始起作用了!只是出于好奇,知道为什么它一开始可能不起作用但后来起作用了吗?无论如何,感谢您的帮助!以上是关于Django将单词添加到图像url的主要内容,如果未能解决你的问题,请参考以下文章
将 ID 添加到 URL 时,django-cors-headers 不起作用