Django и reportlab не видит шрифты на хостинге

Делаю проект на django. Структура проекта следующая:

testproject
           |
           testproject...
           |
           testapp
                  |
                  static
                  |    |
                  |    testapp
                  |          |
                  |          fonts
                  |              |
                  |              Tantular.ttf
                  |      
                  |     
                  ...
                  |
                  views.py

В views.py я создаю pdf файл с помощью reportlab, при этом добавляю шрифт.

...
def create_pdf(request):
    try:
        response = HttpResponse(content_type='application/pdf', )
        ...
        pdfmetrics.registerFont(TTFont('TNR', 'testapp/static/testapp/fonts/Tantular.ttf'))
        pdfmetrics.registerFont(TTFont('TimesNewRoman', 'Times New Roman.ttf'))

        styles.add(ParagraphStyle(name='Center', alignment=TA_CENTER, fontName='TNR', ))

    ...
    except:
       ...
    
    return response

Если запускаю файл локально все работает, причем не важно использую ли я шрифт Times New Roman или Tantular. После того как развернул файл на хостинге, выдаёт ошибку:

TTFError('Can\'t open file "testapp/static/testapp/fonts/Tantular.ttf"'), <class 'reportlab.pdfbase.ttfonts.TTFError'>

Я думаю, что проблема в указании пути к шрифту, а как правильно указать я не знаю.

Все оказалось гораздо проще чем я думал

Добавил во views.py

from os import path

В функцию создания добавил пару строк по определению правильного пути до шрифта.

...
def create_pdf(request):
    try:
        response = HttpResponse(content_type='application/pdf', )
        ...
        
    app_path = path.realpath(path.dirname(__file__))
    font_path = path.join(app_path, 'static/testapp/fonts/Tantular.ttf')

    pdfmetrics.registerFont(TTFont('TNR', font_path))

    styles.add(ParagraphStyle(name='Center', alignment=TA_CENTER, fontName='TNR', ))

...
except:
   ...

return response
Вернуться на верх