在Heroku上的模板中使用使用自定义字体的麻烦



我在Heroku上使用自定义字体时有问题。

为了在生成的PDF页面上正确显示俄罗斯文本,我在html中使用的自定义字体:

<head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
    <title>Boat pdf</title>
     <style type="text/css">
    @font-face   {
    font-family: Palatino Linotype;
    src: url({% static "fonts/Palatino.ttf" %});
}
body {
    font-family: Palatino Linotype, Arial, sans-serif;
    color: #333333;
}
    </style>
</head>

它在本地工作正常,但是每当我试图基于HTML生成PDF文件时迁移到Heroku后,我都会得到一个例外:


File "/app/.heroku/python/lib/python3.7/site-packages/django/contrib/staticfiles/storage.py", line 420, in stored_name
2019-06-26T09:52:03.873127+00:00 app[web.1]: raise ValueError("Missing staticfiles manifest entry for '%s'" % clean_name)
2019-06-26T09:52:03.873128+00:00 app[web.1]: ValueError: Missing staticfiles manifest entry for 'fonts/Palatino.ttf'

这是我与静态文件相关的唯一错误。所有其他静态都可以正常工作。我试图手动运行collectstatic一次,甚至将此字体放在staticfiles文件夹中 - 没有成功。

生产中的静态资产是通过白色提供的。

与静态相关的开发设置为:

INSTALLED_APPS = [
    'whitenoise.runserver_nostatic',
STATIC_ROOT = os.path.join(BASE_DIR, "static")  # new
STATIC_URL = '/static/'
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

生产设置为:

STATIC_ROOT = os.path.join(BASE_DIR, "staticfiles")
STATIC_URL = '/static/'
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

问题是如何在Heroku上使用该字体。将其放在哪里?还是我需要更改模板中的URL?

谢谢!

好吧,出于某种原因,白色whitenoize不会将文件从项目的"静态"文件夹中移动,这很奇怪。我将字体移至App/static/App文件夹,然后再次运行Collectatic,然后将其全部部署到Heroku。现在起作用

最新更新