【问题标题】:substitute string with another string in Django template用Django模板中的另一个字符串替换字符串
【发布时间】:2021-01-05 20:02:32
【问题描述】:

在 view.py 我有一个这样的列表:

context['cities'] = ['London', 'Beijing', 'Cape Town', ..]

我不知道为什么我不能在下面的Html代码中替换字符串中的子字符串:

{% for city in cities % }
  <di style="background-image: url({% static 'app/img/{{city}}.jpg' %});">
{% endfor %}

我期待像 app/img/London.jpg 这样的东西。

inspect 我看到的是这个字符串:

url(/static/app/img/%7B%7Bcity%7D%7D.jpg);

【问题讨论】:

  • 看起来您正在使用 Python Web 服务器,它读取模板 HTML 文件并在发送它们之前将文本插入其中。那是什么服务器?烧瓶?姜戈?还有什么?换句话说,您在主 Python 文件中导入了哪些库?
  • 我更新了标签。我正在使用 django,这是 django 模板,
  • 标记 django 应该会有所帮助。您还可以在这里找到一些信息:docs.djangoproject.com/en/1.8/ref/templates/builtins。看起来他们通常在这些模板文件的大括号内留下空格。也许这会有所帮助?
  • 感谢您的链接,我之前看过这个文档,我也尝试过{% cycle static 'app/img/{{city}}.jpg' %},但是没有用。不确定这是否是正确的方法
  • {% cycle static 'app/img/{{ city }}.jpg' %}{% cycle static {{ 'app/img/{}.jpg'.format(city) }} %} 工作得更好吗?我不使用 django,所以我必须阅读文档才能提出更多建议。

标签: python html django django-templates


【解决方案1】:

我可以通过稍微编辑我的代码来解决问题:

{% for city in cities % }
  <di style="background-image: url("/static/app/img/top-cities/{{ city }}.jpg">
{% endfor %}

【讨论】:

    【解决方案2】:

    在 python 中,{{}} 代表普通花括号,而不是在其中放置值。

    所以{{city}} 不返回城市变量的值,而是返回{city}

    用于返回文字大括号的双大括号很复杂,没有\{ 那么多意义,但它就是这样。

    【讨论】:

    • 这里是官方 python 文档的链接:stupid double curly braces make no sense
    • 感谢您的回答。不过我没看懂,你的意思是应该用html写成app/img/cities/\{{city}}.jpg
    • 我的问题是关于 html,python 就是例子。让我更新
    • 啊,我明白了。那就看看this question吧。
    • 很遗憾,我的问题找不到任何直接的解决方案。
    猜你喜欢
    • 2019-05-14
    • 2013-12-03
    • 2021-06-15
    • 2017-01-28
    • 2017-03-07
    • 1970-01-01
    • 1970-01-01
    • 2014-09-10
    相关资源
    最近更新 更多