Django не может найти путь, хотя он не является жестко заданным
Предыстория этой проблемы такова: я разворачиваю проект Django на рабочем сервере. После тестирования на рабочем сервере я получаю следующую ошибку из моего asgi.log
Проблема в том, что этот путь '/Users/jianxiongwu/Documents/Python/Github/DimsumBox_website/dimsumbox/static/font/Gotham-Light.ttf'
находится от моего сервера разработки на другом компьютере. Я убедился, что путь не является жестко закодированным.
Путь указывает на файлы шрифтов, а в моем реальном коде Django они собираются из settings.STATICFILES_DIRS[0]
см. ниже фрагмент кода. Возможно ли, что переменная settings.STATICFILES_DIRS
кэшируется, поэтому при перемещении моего проекта с сервера разработки на рабочий сервер с помощью git, она была перенесена?
def createPDFDocument():
'''Creates the PDF document object and adds the font to the document'''
pdf = PDF()
#add fonts
pdf.pdf.add_font(family = 'hdFontLight',
fname = settings.STATICFILES_DIRS[0] + '/font/Gotham-Light.ttf',
uni = True)
pdf.pdf.add_font(family = 'hdFontMedium',
fname = settings.STATICFILES_DIRS[0] + '/font/Gotham Medium.ttf',
uni = True)
return pdf
Отрывок из моего settings.py
BASE_DIR = Path(__file__).resolve().parent.parent
STATICFILES_DIRS = [os.path.join(BASE_DIR,'static')]
Вы запустили collecstatic
на своем рабочем сервере?
Вы можете прочитать эти страницы документации : collectstatic (Собирает статические файлы в STATIC_ROOT) и STATICFILES_DIR settings.
Оказалось, что эта проблема не вызвана settings.STATICFILES_DIR
. Я выяснил это, просмотрев журнал, и убедился, что путь к файлу шрифта, указанный библиотеке fpdf2
, был действительно правильным. Я не уверен, где на самом деле была проблема, но в итоге я деинсталлировал fpdf2
и переустановил его снова, и проблема была решена. Поэтому я думаю, что проблема должна быть где-то в библиотеке fpdf2
.