【问题标题】:How to modify a string of a field in a queryset in Django, to display it in a templatetag如何在Django中修改查询集中的字段字符串,以将其显示在模板标签中
【发布时间】:2017-01-17 04:23:51
【问题描述】:

我有下一个查询集:

fotosinfo=IndexHasFotografia.objects.filter(index_idindex=infoindex,ubicacion_fotografiaindex=1).values('fotografia_idfotografia__pk','fotografia_idfotografia__ruta_fotografia','fotografia_idfotografia__nombre_fotografia')

fotografia_idfotografia__ruta_fotografia 存储图像 URL 的位置,但存储的路由类似于 ./image.jpg,它必须是 /files/image.jpg。在模板中,我可以在模板标签之前添加/files,但我不能删除斜线之前的点。我无法更改存储图像的方式,因为我存储了很多图像。我使用 json 显示其他图像,这更容易,但现在我必须使用模板标签。那么,如何删除该点以在模板标签中显示图像 URL?


我尝试使用切片过滤器作为这个问题的答案:Remove first character from string Django template 但现在字符串消失了。

我的html里面有一个模板标签,看起来像这样:

<img src="{{ fotosslide.first.fotografia_idfotografia__ruta_fotografia.name|slice:'1:' }}"> 

【问题讨论】:

  • 为什么不搜索您的数据库并找到所有以./ 开头的实例并将其替换为/files/
  • 你不是只是想添加一个静态/媒体文件 URL 吗? /files/ 是你的 MEDIA_URL/STATIC_URL?
  • @allcaps 这将是一个很好的解决方案 :D 我已经找到了解决方法,这是我对切片过滤器的坏处。
  • @vmonteco /files/ 是我的媒体 URL,我现在有一种方法可以在模板中附加 MEDIA_URL 变量,但是,它适用于部署还是仅适用于开发?
  • DEV、TST、ACC、PRD,都将/files/ 作为媒体 url,但 Django 仅使用开发服务器(正确的配置和 DEBUG=True)提供此目录。在其他情况下,您需要将服务器配置为为您服务/files/

标签: django


【解决方案1】:

您似乎只是在尝试处理一些媒体文件。

默认情况下,Django 不提供这些文件(在生产中,这是一个 HTTP 服务器,如 Nginx 或 Apache 为您的文件提供服务)。但是您可以通过将其添加到您的根 urls.py 文件中来在开发环境中启用它:

if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.STATIC_ROOT)

别忘了导入settingsdjango.conf)和staticdjango.conf.urls.static

more here.

您可以在模板中使用文件的 url 作为常规的静态/媒体文件 url,这些文件应该由 django 开发服务器提供(如果 DEBUGTrue)。

https://docs.djangoproject.com/en/1.10/howto/static-files/#configuring-static-files

然后在模板中使用文件的path.url 属性,如this answer 中所述。

【讨论】:

    【解决方案2】:

    我只是重新加载页面的代码,而不是实际页面来查看其代码,这就是没有更新 html 的原因。它以我发布的方式工作,点被删除,后来我只是附加了files,这就是它的样子:

    <img src='/files{{ fotosslide.0.fotografia_idfotografia__ruta_fotografia|slice:"1:"}}'>
    

    我还不知道图像是否已显示,因为它是幻灯片的一部分并且 javascript 无法正常工作,我必须检查一下。但现在 URL 是正确的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-20
      • 1970-01-01
      • 2020-10-17
      • 2015-04-28
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      • 1970-01-01
      相关资源
      最近更新 更多