【问题标题】:How to indent Django templates properly如何正确缩进 Django 模板
【发布时间】:2020-01-04 03:17:59
【问题描述】:

我在 SublimeText 3 中工作。在编写 Django 模板时,我混合使用了 html 和函数。

我喜欢缩进我的代码,以便缩进 blockif 和其他此类语句。例如:

手动格式化

{% extends "accounts/base.html" %}

{% block content %}
  <h1>Password changed</h1>
  <p>Your password was changed.</p>
{% endblock %}

但是,当我运行任何自动格式化程序 HTML-CSS-JS-Prettify 时,它会忽略这些括号并将它们视为文本:

格式化后

{% extends "accounts/base.html" %}
{% block content %}
<h1>Password changed</h1>
<p>Your password was changed.</p>
{% endblock %}

虽然像Djaneiro 这样的插件可以很好地突出显示标签,但我还没有找到让 SublimeText 将它们视为标签的方法。

有没有人运气好?

【问题讨论】:

  • 目前没有t *似乎有任何支持 Django 的格式化程序。不过,您可能会觉得这个discussion 很有趣。
  • 其实black应该支持格式化Django模板。所以听起来你可能可以使用Sublack,但我自己无法让它运行。也许你有更多的运气!
  • @idleberg 如果你指的是https://github.com/django/deps/blob/master/accepted/0008-black.rst,不幸的是它只支持python代码,不支持模板。
  • 不知道崇高,但 pycharm 允许通过转到 Code -> Reformat code 来重新格式化代码,它似乎工作得相当好。也许你可以看看
  • Pycharm IDE 很久以前就支持此功能。幸运的是,ProfessionalCommunity 版本均提供此功能。他们已经在此处创建了有关此功能的文档,Reformat and rearrange code--(Pycharm Help)

标签: django django-templates sublimetext3


【解决方案1】:

据我所知,没有一个用于崇高文本的。我没有可以引用的来源,但我基本上没有搜索到任何东西。

这个讨论无论如何都是旧的,但很活跃。我发现this really old ticket 是关于 Django 格式标准的,它已在 9 个月前更新,基本上说他们“支持标准”,建议的模板格式为:

  <ul>
    {% for x in y %}
      <li>{{ x }}</li>
    {% endfor %}
  </ul>

他们还 made a place happen 保存有关 Django 格式指南的信息。

You might find this discussion interesting as well. 它也很老了,但它突出了 Django 中格式化的困惑以及人们想出的 DIY 解决方案。

【讨论】:

    【解决方案2】:

    这是一个迟到的答案,但我想提一下我自己创建的 Django 模板格式化程序:DjHTML。您可以使用pip install djhtml 安装它。

    假设template.html 包含以下内容:

    {% extends "accounts/base.html" %}
    {% block content %}
    <h1>Password changed</h1>
    <p>Your password was changed.</p>
    <script>
    $(function() {
    console.log("Password changed!");
    });
    </script>
    {% endblock %}
    

    然后运行djhtml template.html 将给出以下输出:

    {% extends "accounts/base.html" %}
    {% block content %}
        <h1>Password changed</h1>
        <p>Your password was changed.</p>
        <script>
            $(function() {
                console.log("Password changed!");
            });
        </script>
    {% endblock %}
    

    使用 DjHTML 作为pre-commit 钩子是最简单的,这样当您运行git commit 时模板会自动缩进。可以在README 中找到有关如何配置预提交的说明。

    【讨论】:

      猜你喜欢
      • 2013-08-20
      • 1970-01-01
      • 1970-01-01
      • 2021-12-30
      • 2013-08-01
      • 1970-01-01
      • 2016-01-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多