使用 Pygments 在 Django 项目中显示 <pre> 中的行号
Posted
技术标签:
【中文标题】使用 Pygments 在 Django 项目中显示 <pre> 中的行号【英文标题】:Showing the line numbers in <pre> in Django project using Pygments 【发布时间】:2021-12-29 22:03:35 【问题描述】:我在我的 Django 项目中使用 Pygments 包。当我尝试在我的模板中渲染代码 sn-p 时,它会将整个数据渲染如下:
模板:
...
% pygmentify %
<pre class="snippet.lang">snippet.body</pre>
% endpygmentify %
...
最终呈现的 html:
<pre lang="python">
...
<span class="kn">import</span> <span class="nn">hello</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">'hey'</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">test</span><span class="p">():</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">'in the function'</span><span class="p">)</span>
...
</pre>
它实际上没有痛苦。整个代码块被正确突出显示。问题是我也想显示行号。我应该为它们设置样式还是只需要一个简单的 Pygments 配置?
谢谢。
【问题讨论】:
【参考方案1】:如果您使用 django-pygmentify,您可以传递关键字参数,如 their docs 中所示
% pygmentify linenos='inline' %
<pre class="snippet.lang">snippet.body</pre>
% endpygmentify %
【讨论】:
它有点工作,但代码块的整个风格完全是粉笔!可以设置行号侧边栏的样式吗?就像这个关键字将 [pre-code] 样式转换为表格!我不明白。 我不知道你所说的粉笔是什么意思,但你可以为特定样式或 css 文件传递其他关键字,如文档链接所示。您可以调整许多选项。 @Alireza 试试新代码。'inline'
将把它整合到 标记中,而所有其他 linenos
值组成一个表格。
就是这样。谢谢。有什么方法可以为这些 设置样式? (我知道我可以通过使用内部 CSS 选择器访问它们)只需浏览我的答案中的链接以及它与 HTMLFormatter 的链接。我认为
style
关键字参数可能是相关的,但我个人还没有足够的使用它来给你一个直接的答案以上是关于使用 Pygments 在 Django 项目中显示 <pre> 中的行号的主要内容,如果未能解决你的问题,请参考以下文章
全局加载 Django“静态”模板标签库,而不在每个文件中显式加载它
id 主键是不是必须在从 inspectdb 针对现有数据库生成的 Django 模型中显式定义?