You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django应用中如何格式化美化KQL查询?能否用指定JS库实现?

在Django Web应用中实现KQL查询的格式化、美化与语法高亮

核心结论

不需要部署独立的Node.js服务器,完全可以在前端借助微软官方的KQL工具库直接实现格式化、语法高亮与校验逻辑,Django后端仅需负责传递KQL数据即可。


方案1:用@kusto/monaco-kusto实现完整编辑器体验

这个库是基于VS Code同款的Monaco Editor打造的KQL扩展,自带语法高亮、自动格式化、实时语法校验功能,适合需要让用户编辑或查看交互性KQL的场景。

  • 实现步骤:
    1. 在Django的HTML模板中引入Monaco Editor和@kusto/monaco-kusto的CDN资源(或把静态文件放到Django的static目录)。
    2. 初始化Monaco Editor实例并注册KQL语言支持:
      require.config({ paths: { 'vs': 'https://cdn.jsdelivr.net/npm/monaco-editor@latest/min/vs' } });
      require(['vs/editor/editor.main'], function () {
          require(['https://cdn.jsdelivr.net/npm/@kusto/monaco-kusto@latest/dist/monaco-kusto'], function (kusto) {
              kusto.registerLanguage();
              // 创建编辑器并传入单行KQL
              const editor = monaco.editor.create(document.getElementById('kql-editor'), {
                  value: '你的单行KQL查询',
                  language: 'kusto',
                  theme: 'vs-dark' // 可选主题
              });
              // 手动触发格式化(编辑器也会自动处理)
              editor.getAction('editor.action.formatDocument').run();
          });
      });
      
    3. 在页面中预留容器(如<div id="kql-editor" style="width:800px;height:400px;"></div>),编辑器会自动渲染格式化后的KQL,同时提供语法高亮和错误提示。

方案2:用@kusto/language-service-next做轻量文本处理

如果不需要完整编辑器UI,仅需对单行KQL做格式化和校验,这个纯语言服务库更适合——它专注于KQL的语法解析、格式化和校验,体积更小。

  • 实现步骤:
    1. 在前端引入该库的JS文件(通过CDN或本地静态资源)。
    2. 调用格式化API处理单行KQL:
      import { LanguageService } from '@kusto/language-service-next';
      const service = new LanguageService();
      const formattedKql = service.formatDocument('你的单行KQL查询');
      // 将格式化结果渲染到页面代码块
      document.getElementById('formatted-kql').textContent = formattedKql;
      
    3. 语法校验:
      const diagnostics = service.getDiagnostics('你的单行KQL查询');
      // 处理校验结果,比如展示错误信息
      diagnostics.forEach(diag => {
          console.log(`语法错误:${diag.message},位置:${diag.start}-${diag.end}`);
      });
      
    4. 语法高亮:可配合highlight.js添加KQL语法规则,或给<pre><code>标签自定义CSS样式,实现格式化文本的着色效果。

Django端的配合

Django只需将单行KQL数据通过模板上下文传递给前端页面,所有格式化、高亮、校验逻辑都在前端完成,不会增加后端负担。如果需要在后端提前格式化KQL(如存入数据库前),也可使用Python第三方库kql-parser处理,但前端处理更灵活。

内容的提问来源于stack exchange,提问作者Suraj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 06:42:41