互联网公共IP地址和Django静态文件(PDF)

时间:2018-08-03 23:15:57

标签: django nginx weasyprint

我用django和weasyprint制作了一个应用程序,该应用程序可以打印带有图片的pdf文件和设计我的pdf文件的css文件。我使用nginx,gunicorn和超级用户来部署我的应用程序。在我的Intranet中一切正常。当我使用INTERNET PUBLIC IP地址在Internet上发布它时,我的pdf文件不再显示图片和CSS设计。但是所有应用程序的静态文件都能正常工作 我看到我的金枪鱼原木,但什么也没有。 我使用Nginx提供我的静态文件。这个配置

  

上游app_server {      服务器Unix:/webapps/myapp/run/gunicorn.sock fail_timeout = 0;   }

     

服务器{

     

听80;

     

服务器名称127.0.0.1;

     

client_max_body_size 4G;

     

access_log /webapps/myapp/logs/nginx-access.log;

     

error_log /webapps/myapp/logs/nginx-error.log;

     

位置/静态/        {          别名/ webapps / myapp / basegenecirdes / public / static /;      }

     

位置/ media / {          别名/ webapps / myapp / media /;      }

     

位置/ {          proxy_set_header X-Forwarded-For $ proxy_add_x_forwarded_for;          proxy_set_header主机$ http_host;          proxy_redirect关闭;

   if (!-f $request_filename) {
       proxy_pass http://app_server;
       break;
   }
     

}

在我的views.py中

调用pdf文件,我使用它

  

html = render_to_string('pdf / print.html',{'pagesize':'A4'})   响应= HttpResponse(content_type =“ application / pdf”,)   response ['Content-Disposition'] ='内联; filename =“ print.pdf”'   weasyprint.HTML(string = html,base_url = request.build_absolute_uri())。write_pdf(response)
  返回响应

静态图片文件:

<img style="background-color: white" src="{% static "image/photo_50x48.png" %}">

媒体图片文件

<img alt="{{ a.nom }}" src="{{ a.photo.thumbnail.url }}" >

有人有同样的问题吗?

1 个答案:

答案 0 :(得分:0)

阅读您的修改后,该问题似乎与PDF output using Weasyprint not showing images (Django)重复

您的代码中已有答案的第一部分。但是我在您的write_pdf()电话中看不到这部分:

  

要使HTML样式显示在PDF上,请根据Weasyprint文档添加presentational_hints = True:

     

pdf = html.write_pdf(stylesheets=[CSS(settings.STATIC_ROOT + '/css/detail_pdf_gen.css')], presentational_hints=True);