2014-10-02 13 views
0

我在调试状态,我想呈现一个HTML页面PrinceXML为PDF。我需要加载包含的HTML staticfiles在Django?

在我的主要HTML我有:

{% extends "base.html" %} 
{% load staticfiles %} 
{% load url from future %} 

{% block title %}Title{% endblock %} 

{% block style %} 
    {% include "style.html" %} 
    <link rel="stylesheet" type="text/css" href="{% static "more.style.css" %}"/> 
{% endblock %} 

{% block branding %}<a class='brand' rel="nofollow" href="{% url 'url' %}">Brand</a>{% endblock %} 

{% block userlinks %} 
    {% if user.is_authenticated %} 
     <li class="dropdown"> 
      <a href="#" class="dropdown-toggle" data-toggle="dropdown"> 
       {{ user }} 
       <b class="caret"></b> 
      </a> 
      <ul class="dropdown-menu"> 
       <li><a href="{% url 'generate-pdf' %}">Get the doc in pdf</a></li> 
       <li><a href="{% url 'dashboard.views.index' %}">Home</a></li> 
       <li><a href="{% url 'logout' %}">Logout</a></li> 
      </ul> 
     </li> 
    {% endif %} 
{% endblock %} 

我style.html是生成PDF所需的princeXML信息:

@page { 
    margin-left: 0.8cm; 
    margin-right: 0.8cm; 
    margin-bottom: 2cm; 
    margin-top: 4cm; 

    @top-left { 
     margin-left: -0.6cm; 
     margin-right: -0.6cm; 
     content: url({% static "url" %}); 
    } 

    @bottom-right { 
     border-top: solid 1px #bbb; 
     margin-top: 0.4cm; 
     vertical-align: middle; 
     font-size: 8pt; 
     content: counter(page) "/" counter(pages) 
    }  

    @bottom-center { 
     border-top: solid 1px #bbb; 
     margin-top: 0.4cm; 
     vertical-align: middle; 
     font-size: 8pt; 
     content: "{% now 'j.m.Y' %}" 
    }  

    @bottom-left { 
     border-top: solid 1px #bbb; 
     margin-top: 0.4cm; 
     padding-right: 2cm; 
     vertical-align: middle; 
     font-size: 8pt; 
     content: "footer info" 
    }  

    size: A4 
} 

html { 
    font-family: Arial, Verdana, Geneva, Helvetica, sans-serif ; 
} 

div.page-header { 
    page-break-before: always 
} 

我的问题是:当我将样式包含到已经有{%load staticfiles%}的HTML中时,是否需要使用lo在style.html中再次添加广告?

我的猜测是肯定的,因为在Django文档正如所说,包括将呈现与我的主要HTML的背景下style.html,但staticfiles库不是上下文的一部分。我对吗 ?

回答

1

Django docs

的包括标签应被视为实现“渲染 这个子模板,并包括HTML”,而不是“分析此子模板 ,包括它的内容就好像它是父母的一部分“。这意味着 存在包含的模板之间没有共享的状态 - 每个 包括是完全独立的渲染过程。

因此,您的收录模板并不知道您的主HTML中发生了什么,所以您应该在您的收录模板中包含staticfiles

+0

我的文档阅读,但它并没有回答以下问题:共享所包括的HTML的唯一的事情是上下文变量? – Laurent 2014-10-02 06:22:02

+1

没错。 :) – Filly 2014-10-02 06:30:15

+0

谢谢菲莉! – Laurent 2014-10-02 06:32:09

相关问题