Django在静态文件中使用静态文件URL

时间:2018-09-29 15:47:56

标签: python django django-templates

我想在<user-tags v-bind:tagGroup="'industry'" :typeahead-activation-threshold="2" :userId="user.id" :isSearchable="true"></user-tags> <user-tags v-bind:tagGroup="'expertise'" :typeahead-activation-threshold="2" :userId="user.id" :isSearchable="true"></user-tags> 文件中使用一种自定义字体,该字体将由style.css提供

我知道我可以用这样的东西进行硬编码:

StaticFiles

我正在寻找类似的东西:

@font-face { font-family:"NotoSansArabic"; font-style:normal; src: url("/static/myApp/fonts/NotoSansArabicUI-ExtraBold.ttf") format("truetype") }

还有其他方法吗?

font和style.css均用作{% static 'myApp/fonts/NotoSansArabicUI-ExtraBold.ttf' %}

1 个答案:

答案 0 :(得分:1)

要使{% static %}工作,您需要一个Django模板;不是静态文件。实际上这是可能的:您可以创建一个名为djangostyle.css的文件并将其放在您的templates文件夹中。在此文件中,您可以照常使用{% static %}。然后,您将使用{% include %}从模板中引用该文件。

如果您想查看完整的示例,请查看我的Django PDF指南文章:https://spapas.github.io/2015/11/27/pdf-in-django/#changing-the-font-to-a-unicode-enabled-one

这是那里的两个相关文件:

pdfstylefonts.css目录中名为templates的Django模板样式表:

{% load static %}
@font-face {
    font-family: "Calibri";
    src: url({% static "fonts/calibri.ttf" %});
}

和html模板:

{% load static %}
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <style>
        {% include "pdfstylefonts.css" %}
    </style>
    <link rel='stylesheet' href='{% static "pdfstyle.css" %}'/>
</head>
<body>
    <h1>Λίστα βιβλίων</h1>
    <img src='{% static "pony.png" %}' />
    <table>
        <tr>
            <th>ID</th><th>Title</th><th>Cover</th>
        </tr>
        {% for book in books %}
            <tr>
                <td>{{ book.id }}</td><td>{{ book.title }}</td><td><img src='{{ book.cover.url }}' /></td>
            </tr>
        {% endfor %}
    </table>
</body>
</html>

请注意,css-django-template(通过<style>{% include "pdfstylefonts.css" %}</style>包括它)和普通的css文件(与<link rel='stylesheet' href='{% static "pdfstyle.css" %}'/>一样包括它)之间的区别。