4

私はdjango-wkhtmltopdfでwkhtmltopdfを使用していますが、静的ファイルを正しく提供していないと思います。コンソールから wkhtmltopdf を実行すると、静的ファイルが適切に収集され、適切な pdf ファイルが生成されます。

wkhtmltopdf http://127.0.0.1:8000/dash/test/ test.pdf

"GET /static/base/js/jquery.js HTTP/1.1" 200 93106

"GET /static/base/css/bootstrap.css HTTP/1.1" 200 119892

「GET /static/base/js/bootstrap.min.js HTTP/1.1」 200 27726

"GET /static/dash/css/flot.css HTTP/1.1" 200 1810

"GET /static/dash/js/jquery.flot.categories.js HTTP/1.1" 200 6033

"GET /static/dash/js/jquery.flot.js HTTP/1.1" 200 119052

ただし、django-wkhtmltopdf を使用してアプリケーションから生成された PDF ファイルの場合、次のものしかありません。

"GET /dash/test/ HTTP/1.1" 200 13246004

生成された PDF ファイルは次のようになります。

ここに画像の説明を入力

settings.py の静的ファイルは次のように設定しました。

MEDIA_ROOT = ''

MEDIA_URL = ''

STATIC_ROOT = '/Users/malt/Django/env/app/static/'

STATIC_URL = '/静的/'

STATICFILES_DIRS = ( )

STATICFILES_FINDERS = ( )

他に何をチェックすればよいですか?

4

2 に答える 2

3

静的ファイルの場合、およびすべての設定について、次のようなものを使用します (settings.py 内):

# settings.py
import os

BASE_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))


def ABS_DIR(rel):
    return os.path.join(BASE_DIR, rel.replace('/', os.path.sep))

MEDIA_ROOT = ABS_DIR('project_name/site_media/')
MEDIA_URL = '/site_media/'
STATIC_ROOT = ABS_DIR('project_name/static/')
STATIC_URL = '/static/'

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)
STATICFILES_DIRS = (
    ABS_DIR('project_static'),
)

そして urls.py (その一部):

# urls.py
from django.conf import settings
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.conf.urls.static import static

# for dev static files serving
if settings.DEBUG:
    urlpatterns += staticfiles_urlpatterns()
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

テスト済みで動作しています。PDF クラスのパスに問題があるのではないでしょうか?

于 2013-10-18T12:31:53.687 に答える
2

私は同様の問題を抱えていましたが、私の修正は完全なURLを私のSTATIC_URL.

したがって、代わりに:

STATIC_URL = '/static/'

私は使用しなければなりませんでした:

STATIC_URL = 'http://localhost:8000/static/'
于 2016-06-10T21:55:59.430 に答える