PyCharm:HTML Python 字符串中的语法检查和突出显示

PyCharm: HTML Syntax checking and highlighting in Python strings

示例:

@register.simple_tag
def last_orders(user):
    rows = []
    for order in Order.objects.filter(user=user).order_by('-offer__date'):
        rows.append(format_html('<tr><td>{}</td><td>{}</td><td>{} Eur</td><td class="int col-1">{}</td><td>{} Eur</td></div>',
                                order.offer.date, order.offer.text, order.offer.price, order.amount, order.amount*order.offer.price))
    if not rows:
        return format_html('<div>No orders up to now.</div>')
    return format_html('''Last Orders: 
     <table class="table table-striped">
      <tr><th>Date</th><th>Text</th><th>Price</th><th class="col-1">Amount</th><th>Sum</th></tr>
      {}
     </table>
     ''', join(rows))

PyCharm 是否能够像上面那样在 Python 字符串中进行 HTML 语法检查和突出显示?

@guettli 据我所知,PyCharm 只会将嵌入的 HTML 代码视为字符串,因为 ' ' 在 [=14= 周围使用]代码。

是的! PyCharm 两者都可以...

要在包含 HTML 的 Python 字符串中同时使用这两种功能,首先需要使用称为 “语言注入” 的 IDE 功能。 =36=]

在 IDE “语法检查” 的上下文中通常称为 “检查”"Syntax highlighting""Color Scheme"下,如下(与同段的Python项对比):

Functionalities IDE path to dialogue
Syntax checks Settings > Editor > Inspections > HTML
Syntax highlights Settings > Editor > Color Sheme > HTML

使用语言注入:

我在 JetBrains 网站上找到的最佳指南是:"Language injections (for IntelliJ IDEA)", it follows the exact same steps as the guide for the PyCharm IDE but is more elaborate. (I also liked this youtube video 展示了如何对几种不同的语言进行 “语言注入”。)

我使用了以下 Python 代码 separating the string with a backslash \ 因为它更容易在不同的行上看到语法错误警告:

# language=HTML prefix=<body> suffix=<body>
your_python_string = '\
    <body text=""><h1>some header text</h1></body>\
    t<br></br> \
    <dir>\
    '

话虽如此,让我们配置功能:

首先在 Python 字符串文字内部单击,然后按 Alt + Enter 或单击灯泡弹出窗口;选择 "Inject language or reference" 然后选择 "HTML" 如下所示,字符串文字的背景颜色应该改变:

HTML:

的语法检查(或检查)

此时如果你按 Alt + 6(运行 Inspect Code 给出额外的警告)应该有一个停靠的 window 与HTML 警告和语法检查。您还将获得 HTML 可用的代码提示:

语法亮点:

This dialogue is integrated into the PyCharm per language,在激活“语言注入”后,对于已经具有HTML特定高亮的字符串文字,您可以调整配色方案更符合您的喜好:

最后的想法:

PyCharm 为 HTML 发出的警告如下面的屏幕截图所示。其他功能 associated with HTML files 也可以在 HTML 注入的字符串中使用。