2017-03-17 89 views
0

我想使用Django(1.8)render_to_string將html轉換爲pdf與管理命令而不是使用查看/請求。以下代碼可以將模板轉換爲pdf。但它無法將CSS加載到模板中。Django - 呈現爲字符串無法加載CSS

def html_to_pdf(): 
    ... 
    context = {'some_key': 'some_value'} 
    html = render_to_string('my_app/sample.html', context) 
    file.write(html) 
    ... 

sample.html

{% load static %} 
<link href="{% static 'my_app/css/sample.css' %}" rel="stylesheet" type="text/css"/> 

我也有靜態的設置文件中定義:

STATIC_URL = '/static/' 

在我的Django項目,還有另外一個取景功能,它能夠裝載當URL被調用時,用CSS創建模板。所以我認爲這個問題與render_to_string有關。

任何人都可以幫忙嗎?

+0

你有沒有設法解決這個問題?我有同樣的問題。謝謝克里斯。 –

回答

0

假設你有django.core.context_processors.static Django的< 1.10 django.template.context_processors.static在模板context處理器1.10,問題是你是在傳遞一個簡單的語境詞典,而在一個視圖render你奇蹟般地得到RequestContext自動填充了一把基於您在設置中使用的上下文處理器的變量。在這種情況下,context processor將填充一個名爲STATIC_URL的變量,該變量等於設置中相同變量的值。

+0

我正在使用1.8,並在我的設置中使用了context_processors.static。是否可以在上下文字典中手動添加static_url? –

+0

只是試圖添加:上下文['STATIC_URL'] ='/靜態/',但仍然沒有工作 –

+0

把CSS代碼放入模板! – Lemayzeur

0

你可以嘗試:

from django.template.loader import get_template 


html = get_template("my_app/sample.html") 
context = {'some_key': 'some_value'} 
html_content = html.render(context) 
file.write(html_content) 
+0

我試過這種方式,沒有工作。 –