我正在使用Komodo Edit 5.2来编辑html和Django模板文件。它总是在我模板的第一个标记的第一个{%block%}区域内显示单个语法错误。
例如:
{% extends "base.html" %}
{% load i18n %}
{% block title %}Hello{% endblock %}
{% block content %}
<p>Hello</p> <-- Syntax error on this single line
<p>Other lines have no errors</p>
{% endblock %}
{% block footer %}
<p>No errors here</p>
{% endblock %}
给出的语法错误是:
Info: <head> previously mentioned
我知道错误与我的<head>
标记无关,因为它出现在基本模板和子模板中(并且IDE在处理基础模板时不够智能)一个孩子等。)我的所有html标签都正确关闭,一切都验证了XHTML严格。
这个forum post提到了类似的问题,但没有提供任何解决方案(可能特定于Smarty语法突出显示)。
有关如何解决此错误(或禁止显示此错误)的任何想法?
答案 0 :(得分:6)
是的,这可以修复,但它确实是一种非常丑陋的方法。
我应该指出这是跟踪器中的一个错误#77251(编辑:这在Komodo 6.1.0中得到修复)。您可以观察该错误,以便在实际修复时找到它。
至于停止红色波浪线 - 你可以通过手动编辑Django模板HTML的python语言文件来做到这一点。您要修改的文件为koDjango_URL_Language.py
,可在..ActiveState Komodo Edit 5\lib\mozilla\extensions\django_language@ActiveState.com\components
。
将以下覆盖方法添加到class KoDjangoLanguage
:
def get_linter(self):
return None
请注意,这假设您将django模板文件保存为.django.html(如果您没有,请在旁边注释,这样做会提供模板标记语法着色,这有点不错)。编辑完文件后,保存并重新加载Komodo,问题就会消失。
根据我的理解,每当您升级Komodo版本时,都需要重新编辑此文件。希望我们能够很快看到整个问题得到修复,并且在每个人最喜欢的IDE中都能更好地支持Django。
答案 1 :(得分:2)
如果您主要从事Django项目,可以通过编辑首选项&gt;来更改Komodo对* .html文件的默认处理。文件关联并将* .html的关联更改为“Django”(例如,通常用于* .django.html)。这样可以节省您重命名所有模板文件的费用。
为了摆脱波浪形的红线,我使用了一个自定义的Tidy配置文件,可以在Preferences&gt;下指定。语言&gt;配置文件选择器中的HTML。这个文件的内容很简单:
show-warnings:n
这有点像黑客攻击,因为它也会抑制合法的HTML警告。然而,在Komodo / Tidy本身支持Django模板标签之前,它适用于我。
答案 2 :(得分:2)
如果您正在寻找隐藏线条线条的方法,而不是摆弄HTML Tidy配置,请尝试以下操作。在“首选项”&gt;“字体和颜色”中,选择“指标”标签。在指标选择器中有一个名为“Linter error”的条目。为其指定“隐藏”样式,隐藏线条线条。状态行仍将显示linter信息。这是在Linux上的Komodo Edit 5.2.4上测试的。
答案 3 :(得分:1)
与将模板文件重命名为* .django.html并使用通用视图一样,您可能遇到TemplateDoesNotExist异常,因为django只查找* _list.html,就像我所关注的那样。
编辑:此外,重命名所有模板时不要忘记重命名所有模板
适当地{% extends *.html %}
到{% extends *.django.html %}
。
答案 4 :(得分:0)
我总是在编辑Django模板时禁用HTML错误检查,因为它们并非完全有效的HTML,您可能已经意识到了这一点。我不确定是否可以为Komodo Edit做到这一点,但我知道它可以为Komodo IDE完成,所以人们可能会认为它们在这方面是相似的。无论如何,所以解决方案有点烦人,我害怕;您需要为您编辑的每个文件禁用它(我不知道如何全局执行此操作)...
我现在不在我的工作电脑上,但如果内存为我服务,窗口框架底部会有一个图标,您可以右键单击以编辑属性。深埋在那里应该有一个禁用HTML语法检查的选项。
如果您找不到该选项,请告诉我,我会尽量填补空白。