Django:模板标签无法加载图像。只能读取媒体图像

时间:2016-11-21 15:48:51

标签: django image django-templates pisa

我正在尝试使用django pisa模块生成PDF。

views.py

def reportPdf(template_src, context_dict):

        template = get_template(template_src)
        context = Context(context_dict)
        htmlRender = template.render(context)
        resultObj = StringIO.StringIO()
        pdfObject = pisa.pisaDocument(StringIO.StringIO(htmlRender.encode(
            'utf-8')), resultObj,link_callback=fetch_resources)
        response = HttpResponse(resultObj.getvalue(), content_type = 'application/pdf')
        response["Content-Disposition"] = 'inline;filename=sample.PDF'
        return response
 def fetch_resources(uri, rel):
         import project.settings
         path = os.path.join(project.settings.MEDIA_ROOT, uri.replace(
                                            project.settings.MEDIA_URL, ""))
         return path

class abc():
     def get(self,request, *args, **kwargs):
     // some code
     return reportPdf('pdf.djhtml',{'pagesize': 'A4',"refer_data":detail}

settings.py:

PROJECT_PATH = os.path.realpath(os.path.dirname(__file__))
MEDIA_ROOT = os.path.realpath(os.path.join(PROJECT_PATH, "media"))
MEDIA_URL = '/media/'

模板:

pdf.djhtml: 媒体文件夹中可用的图像代码:

<img src="/media/sample.jpg"/>

上面的工作正常,因为我在views.py中加入了媒体

但是下面的代码不会加载图片。

refer_data.image.url = http://www.w3schools.com/images/w3schools_green.jpg(将此http网址视为测试示例)。这个图片网址来自API调用。

 {% if refer_data.image.url != "" %}
        <img src="{{refer_data.image.url}}"/>
 {% else %}
       <img src="noimage.png"/>

 {% endif %}

有人可以分析并分享我失踪的地方吗? 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以使用fetch_resources包检查import project.settings import validators def fetch_resources(uri, rel): if validators.url(uri): return uri else: path = os.path.join(project.settings.MEDIA_ROOT, uri.replace( project.settings.MEDIA_URL, "")) return path 中是否正在处理本地或绝对HTTP网址:

http://www.google.com

对于绝对网址(/media/myimage.jpg),请返回相对网址AccessibilityService的网址。它会返回已加入的媒体路径。