【问题标题】:Efficient replacement of source urls with django static urls使用 django 静态 url 有效替换源 url
【发布时间】:2019-08-11 10:27:01
【问题描述】:

在 django 中,当我们加载图像时,我们使用类似这样的标签:

<img alt="background" src="{% static "img/inner-6.jpg" %}" />

当我使用 django 进行网站制作项目时,我使用模板并为这些模板构建后端来学习 django,所以当我开始项目时,所有图像源 url 和 css 文件 url 和 javascript url 的给出如下:

<img alt="background" src="img/inner-6.jpg" />

所以要让它在 django 中工作,我必须使用像第一个标签这样的静态变量。并且有很多这样的标签。手动更换它们既费时又效率低。有人可以告诉我执行此操作的有效方法(例如记事本文本替换系统或类似的东西)。有经验的django开发者是如何处理这类问题的?提前致谢。

(在stackoverflow上询问之前我已经搜索了很多,但找不到任何东西)

【问题讨论】:

  • 请编辑您的问题,因为您似乎丢失了部分问题。
  • 您使用的是哪个 IDE?大多数高级编程 IDE 都能够在整个项目中查找和替换字符串,包括使用正则表达式。请参阅下面的@AKX 答案。
  • 我正在使用 Pycharm
  • 使用 Pycharm 的 Replace in Path 选项,然后选择 Regex 和 File mask (*.html) 并使用 AKX 的答案作为搜索模式和替换模式。您可以预览结果,每个结果都会显示将要应用的替换。

标签: django


【解决方案1】:

看起来像是在您的编辑器/IDE 中使用正则表达式进行搜索和替换(这样您就可以捕获src 属性的内容)可能会奏效。

如果你搜索

src="(img/.+?)"

替换为

src="{% static "$1" %}"

你应该得到你想要的。 (在某些编辑器中,您会使用 \1 而不是 $1,而在 PyCharm 中,您需要在替换字符串中转义 {}src="\{% static "$1" %\}"。)

【讨论】:

  • @dirkgroten {/} 不是替换字符串中的元字符(至少在我使用过的编辑器中不是)。
  • 它们在 pycharm 中,所以也许我们应该以不同的方式提及。
【解决方案2】:

如果您确定所有src="..." 属性都包含静态内容,则可以将其替换为简单的sed call [gnu-manual]。如果您的 shell 支持任意 递归匹配 glob 模式(如 fish),我们可以在 shell 中使用 oneliner:

sed -i -E 's/\bsrc="([^"]*)"/src="{% static \'\1\' %}"/g' **.html

因此,我们在这里搜索项目中的所有*.html 文件,并使用sedsrc="..." 内联替换为src="{% static '...' %}"

我建议先提交项目的当前状态,然后检查差异,然后再对更改进行第二次提交。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-14
    • 2019-03-05
    • 1970-01-01
    • 2020-08-05
    • 1970-01-01
    • 2021-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多