我已经遵循了太多的答案,但我需要更多的解释这个主题,因为我想知道它的根本原因。
我正在尝试使用wkhtmltopdf创建pdf。
这是我的设置文件看起来像:Settings.py
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
引用静态文件的URL为:
<link rel="stylesheet" href="{% static '/css/template_pdf.css' %}" type="text/css" />
或
<link rel="stylesheet" href="/static/css/template_pdf.css" type="text/css" />
或
<link rel="stylesheet" href="file:///static/css/template_pdf.css" type="text/css" />
或
我也用了这个:https://gist.github.com/renyi/f02b4322590e9288ac679545df4748d3
并提供URL为:
<link rel='stylesheet' type='text/css' href='{{ STATIC_URL }}static/css/template_pdf.css' />
但我理解的问题是,除了最后一个之外,上述所有内容在渲染视图时都可以完美地工作:
def view_pdf(request):
"""View function for home page of site."""
context= {'title': 'Hello World!'}
# Render the HTML template index.html with the data in the context variable
return render(request, 'pdf/quotation.html', context=context)
但是使用wkhtmltopdf创建pdf时,它特别需要像这样指定url:
<link rel="stylesheet" href="http:localhost:8000/static/css/template_pdf.css" type="text/css" />
我知道我在静态文件中缺少了一些东西。但我想知道为什么它与渲染模板,而不是与生成PDF使用wkhtmltopdf。我不认为这是一个好主意,直接把域名内引用的网址。
一个详细的解决方案将是有帮助的,因为我是非常新的django。
我也试过这个答案,但没有效果:Django wkhtmltopdf don't reading static files
2条答案
按热度按时间kx5bkwkv1#
在调试模式下运行时,我在模板中显式添加了
http://localhost:8000
:在模板中:
我将
debug
添加到上下文(编辑:根据Sara的评论,django模板已经知道debug
变量,所以不需要将其添加到上下文中。xj3cbfub2#
在您的settings.py
要在你的模板中渲染静态文件,django提供static标签。你可以用它作为
另外,请确保您的urls.py中包含此内容
最后不要忘记运行
collectstatic
命令