【问题标题】:Django adding words to image urlDjango将单词添加到图像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 中?

【问题讨论】:

    标签: html django django-models django-views django-templates


    【解决方案1】:

    您应该使用绝对 URL,您可以这样做:

    &lt;img src="<strong>/</strong>{{ item.pic }}"&gt;

    通常如果这是FileField(或ImageField,它是FileField 的子类),您可以让Django 确定URL:

    &lt;img src="{{ item.pic<strong>.url</strong> }}"&gt;

    在这种情况下,Django 将使用MEDIA_URL [Django-doc] 并提供这些文件。在生产中,你需要配置一个像 Apache、Nginx 等的网络服务器;或让内容交付网络 (CDN) 提供这些文件。

    【讨论】:

    • 感谢您的回答!添加 .url 似乎并没有解决问题,因为它仍然使 url 与图像 url 中的路径保持一致。此外,我的设置中有“MEDIA_URL = '/media/'”,但图片网址中没有“媒体”。有没有一种方法可以让图像 url 类似于“media/images/item.jpg”,而不管我要经过哪条路径?目前路径名被添加到我的图片 url 前面,而 ​​Django 找不到图片。
    • @VaultDweller:您是否将媒体网址添加到urls.py
    • 是的,我做到了。我没有收集静态文件,因为我知道本地服务器不需要。
    • 哇,这听起来很奇怪,但是使用 item.pic.url 格式开始起作用了!只是出于好奇,知道为什么它一开始可能不起作用但后来起作用了吗?无论如何,感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2017-07-31
    • 1970-01-01
    • 1970-01-01
    • 2012-11-27
    • 2012-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多