美文网首页PythonPython 运维
win10 环境下使用 django-wkhtmltopdf 将

win10 环境下使用 django-wkhtmltopdf 将

作者: 与蟒唯舞 | 来源:发表于2017-02-17 18:02 被阅读135次

    环境版本:

    • python 2.7.10
    • Django 1.8.5
    • django-wkhtmltopdf 3.1.0

    使用步骤:

    1. 下载并安装相应的系统版本:wkhtmltopdf static binary
    2. 在项目中安装包:pip install django-wkhtmltopdf
    3. settings.py 中将 wkhtmltopdf 添加到 INSTALLED_APPS 中:
    INSTALLED_APPS = (
        # ...
        'wkhtmltopdf',
        # ...
    )
    

    By default it will try to execute the wkhtmltopdf command from your PATH.
    If you can't add wkhtmltopdf to your PATH, you can use the WKHTMLTOPDF_CMD setting:
    WKHTMLTOPDF_CMD = '/path/to/my/wkhtmltopdf'
    or alternatively as env variable:
    export WKHTMLTOPDF_CMD=/path/to/my/wkhtmltopdf
    在我机器上的设置为:WKHTMLTOPDF_CMD = 'C:/wkhtmltopdf/bin/wkhtmltopdf'

    1. settings.py 中设置 STATIC_ROOT = os.path.join(BASE_DIR, 'static'),不然会报错:'NoneType' object has no attribute 'endswith'
    简单应用:

    适合静态 HTML 模版
    urls.py 中添加:

    from wkhtmltopdf.views import PDFTemplateView
    
    urlpatterns = [
        url(r'^simple_pdf/$', PDFTemplateView.as_view(template_name='simple_template.html', filename='simple_pdf.pdf'), name='simple_pdf'),
    ]
    

    simple_template.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <h1>hello PDF</h1>
    </body>
    </html>
    
    高级应用:

    适合动态 HTML 模版,需要自定义类并继承 PDFTemplateView

    from wkhtmltopdf.views import PDFTemplateView
    
    class MyPDFView(PDFTemplateView):
        filename = 'my_pdf.pdf'
        template_name = 'my_template.html'
    
        def get_context_data(self, **kwargs):
            context = super(MyPDF, self).get_context_data(**kwargs)
            # 添加模版中需要的内容
            context['name'] = 'hello PDF'
            return context
    

    urls.py 中添加:

    urlpatterns = [
        url(r'^senior_pdf/$', MyPDFView.as_view(), name='senior_pdf'),
    ]
    

    my_template.html 内容:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <h1>{{ name }}</h1>
    </body>
    </html>
    

    相关文章

      网友评论

      • 6ee0da8f2e57:为什么要win10呢?win7就不行了?Linux也不行了?
        与蟒唯舞:可以啊,只不过要下载并安装相应的系统版本:wkhtmltopdf static binary,我这里是以windows平台为例

      本文标题:win10 环境下使用 django-wkhtmltopdf 将

      本文链接:https://www.haomeiwen.com/subject/vljlwttx.html