我想做的第一件事是profusely感谢所有花时间阅读本文的人。该帖子看起来很长,但这主要是因为我用要点格式对其进行了格式化,并且我希望尽可能详细,并提供一个最小的工作示例。这是我第一次从事独立的编码项目,也是我的第一个Stack Exchange职位,因此即使我检查不违反任何规则,也可能错过了一些东西。
我正在做我的第一个django项目(应该是一个简单的博客),我认为我遇到了许多未知的未知数。我想要:-在我使用的文章模板中渲染[; \ LaTeX]样式的数学公式。模板是一个HTML文件,可以找到源代码here。它扩展了this base template
我已经尝试过
至此,我感到绝望。然后,我尝试了:
恭喜您发表了第一篇SO帖子。我想说的是,您是在提问题的时候钉上钉子的nitpick,我将内联代码。
[不幸的是,现在main mirror that mathjax advertises from Cloudflare似乎无法访问(给我一个403),所以可能是引起您的问题。
Django模板呈现HTML,最终您只是呈现HTML页面。尝试在浏览器中本地运行以下HTML文件。它应该工作。 Django对模板所做的所有工作都是动态注入我在此处进行硬编码的主体:本质上,您只需要呈现一个字符字段(而不是硬编码),就可以了。
<html>
<head>
<script type="text/javascript" id="MathJax-script" async
src="https://cdn.jsdelivr.net/npm/[email protected]/es5/tex-mml-chtml.js">
</script>
</head>
<body>
$$x=\frac{-b+\sqrt{b^2-4ac}}{2a}$$
</body>
</html>
[您在github上找到了一个随机软件包,声称可以为您完成此操作,但是您之前从未听说过,它已经有两年没有更新了。你相信吗
这实际上是一个棘手的问题,如果有人出现并给出明确的答案,我将感到惊讶。我会视具体情况而定。在这种情况下,如果您深入研究源代码,则基本上整个库就是此one file。该库实际上只是注入mathjax脚本。因此,简而言之,在这种情况下,我不会打扰图书馆。
我冒着在一个方面扩展模板文件的风险。 Django没有提供通用的基本模板可能很可惜,如果它不能满足自己的需求,则必须积极替换。早晚都需要一个,如果安装Django给您提供了一个规范的版本,并且所有初学者教程都使用了它,那就太好了。
无论如何,以Kent Shikama的回答,我的网站用于生成他的html的模板看起来像
{% extends "base.html" %}
{% block extrascripts %}
<script type="text/javascript" id="MathJax-script" async
src="https://cdn.jsdelivr.net/npm/[email protected]/es5/tex-mml-chtml.js">
</script>
{% endblock extrascripts %}
{% block content %}
$$x=\frac{-b+\sqrt{b^2-4ac}}{2a}$$
{% endblock content %}
关于base.html可能是什么,一个简单的将产生该答案中的html加上几个HTML注释的简单的将是
<html>
<head>
{% block scripts %}
<!-- put here any scripts (such as JQuery ) that you want to be loaded
UNLESS the specific template requires otherwise
by overriding this block. Add scripts via extrascripts below.
-->
{% endblock scripts}
{% block extrascripts %}{%endblock extrascripts%}
{% block css %}
<!-- put here any CSS styling you want to be loaded
UNLESS the specific template requires otherwise,
by overriding this block. Add extra styling via extracss below.
-->
{% endblock css %}
{% block extracss %}{% endblock extracss %}
</head>
<body>
{% block content %}{% endblock content %}
</body>
</html>
[如果这是一个数学博客项目,则可以将此模板中的MathJax脚本推广到base.html中的块scripts
中。这样,您的模板将仅包含content
块,并且可以自由使用MathJax。
关键是,您的特定页面模板仅需要包含与项目中每个页面所使用的脚本和样式不同的脚本和样式。然后,只需更改该基本html,即可重新设置整个网站的样式。
在现实世界中,扩展base.html并依次由单个页面模板扩展的中间级别的模板很常见,因此可以指定整个页面类别,而无需重复。