我想做的第一件事是足够,感谢所有花时间阅读本文的人。该帖子看起来很长,但这主要是因为我用要点格式对其进行了格式化,并且我希望尽可能详细,并提供一个最小的工作示例。这是我第一次从事独立的编码项目,也是我第一次在Stack Exchange上发表文章,因此即使我检查不违反任何规则,也可能错过了一些东西。
我正在做我的第一个django项目(应该是一个简单的博客),我想我遇到了许多未知的未知数。 我想要: -在我使用的文章模板中渲染[; \ LaTeX]样式的数学公式。该模板是一个HTML文件,可以找到源代码here。它扩展了this base template
我尝试过
在这一点上,我感到绝望。然后,我尝试了:
答案 0 :(得分:1)
恭喜您发表了第一篇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/mathjax@3.0.0/es5/tex-mml-chtml.js">
</script>
</head>
<body>
$$x=\frac{-b+\sqrt{b^2-4ac}}{2a}$$
</body>
</html>
您在github上找到了一个随机软件包,声称可以为您完成此操作,但是您从未听说过它,并且两年内都没有更新。你相信吗
这实际上是一个棘手的问题,如果有人出现并给出明确的答案,我将感到惊讶。我会视具体情况而定。在这种情况下,如果您深入研究源代码,则基本上整个库就是这个one file。该库实际上只是注入mathjax脚本。因此,简而言之,在这种情况下,我不会理会该库。
答案 1 :(得分:1)
我将冒险在一方面扩展模板文件。 Django没有通用的基本模板可能很可惜,如果它不能满足需要,就必须积极地替换它。早晚都需要一个,如果安装Django给了您一个规范的典范,并且所有初学者教程都使用了它,那将是一个很好的选择。
无论如何,以肯特·志摩(Kent Shikama)的回答为例,我网站的生成其html的模板看起来像
{% extends "myproject/base.html" %}
{% block extrascripts %}
<script type="text/javascript" id="MathJax-script" async
src="https://cdn.jsdelivr.net/npm/mathjax@3.0.0/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并依次由单个页面模板扩展的中间级别的模板很常见,因此可以指定整个页面类别而无需重复。