无法在 Django 中使用动态图像 URL
Posted
技术标签:
【中文标题】无法在 Django 中使用动态图像 URL【英文标题】:Can't get Dynamic image URL work in Django 【发布时间】:2020-09-03 19:55:33 【问题描述】:我正在尝试使用 Django 动态 url 显示一个 img,但我无法正确获取动态 url
url.py
path('Obra/<int:id>/', views.detalle_obra, name="detalle_obra"),
work-single.html
...<img src="object.img.url"
views.py
def works(request, id):
obj = Work.objects.get(id=id)
context=
'object':obj
return render(request, 'works-single.html',context)
当我渲染模板时,此图像会在控制台上弹出:
未找到:/Obra/1/static/mySiteWork/img/uploads/Proyecto Obra Cerrillos/P5230031.jpg
我不知道为什么显示“/Obra/1/”。当我打印 object.img.url 时,它只会显示“静态路径 static/mySiteWork/img/uploads/Proyecto Obra Cerrillos/P5230031.jpg”
静态文件在其余模板中工作正常
提前致谢。
【问题讨论】:
【参考方案1】:我解决了这个问题: 我在 html 模板上更改了这个:
<img src="object.img.url">
为此:
<img src="/object.img.url">
不知道为什么......但它工作正常
【讨论】:
在 Django 3.x 中不再有默认的 MEDIA_URL。这意味着它创建了一个相对路径。您必须在 settings.py 中定义 MEDIA_URL。 MEDIA_URL 和 STATIC_URL 都应该以/
开头和结尾。您没有正确完成这些条件中的一项或多项。【参考方案2】:
这很可能是因为设置文件中MEDIA_URL
变量的值。表单中的参数upload_to
与MEDIA_ROOT/MEDIA_URL
相关。 Django 计算用户上传文件的路径为MEDIA_ROOT/MEDIA_URL/file_url
。
您的设置中的 MEDIA_URL 似乎设置为“Obra/1”。
【讨论】:
嗨,MEDIA_URL 上的相同值适用于其他模板,当路径停止工作时,我尝试在 url.py 中发送值为“1”的参数。谢谢以上是关于无法在 Django 中使用动态图像 URL的主要内容,如果未能解决你的问题,请参考以下文章