跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(Flatly)
  • 不使用皮肤
折叠

Odoo 中文社区

  1. 主页
  2. 版块
  3. Odoo 开发与实施交流
  4. 在openerp中使用mako template

在openerp中使用mako template

已定时 已固定 已锁定 已移动 Odoo 开发与实施交流
13 帖子 2 发布者 9.0k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • J 离线
    J 离线
    jerry79
    写于 最后由 编辑
    #1

    我现在想在openerp中使用mako template,参考文章:http://doc.openerp.com/v6.0/developer/Web_client_v6/mako_template.html

    我的做法如下:
    mytemplate.py

    <br />mytemplate = mylookup.get_template(&quot;my_temp.mako&quot;)<br />mytemplate.render()<br />
    



    my_temp.mako

    <br />&lt;%def name=&quot;draw_bar()&quot;&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &lt;%<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; python code&nbsp; #一段画图代码,pycha的sample,这段代码在py文件中测试,可以输出一个图片文件<br />&nbsp; &nbsp; &nbsp; &nbsp; %&gt;<br />%&gt;<br />&lt;body&gt;<br />&nbsp; &nbsp; &lt;table&gt;<br />&nbsp; &nbsp; &nbsp; &lt;tr&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &lt;td&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ${draw_bar()}&nbsp;  #这行代码是调用上面的函数,希望把图形显示在网页的表格中<br />&nbsp; &nbsp; &nbsp; &nbsp; &lt;/td&gt;<br />&nbsp; &nbsp; &nbsp; &lt;/tr&gt;<br />&nbsp; &nbsp; &lt;/table&gt;<br />&lt;/body&gt;<br /><br />现在的问题是,mako模板上的其他内容都可以输出,唯独想放置图片的那个表格没有任何内容,draw_bar函数不知道是否运行正确,在py文件中测试时,draw_bar函数调用后,可以在硬盘上生成一个图片文件,但是放在mako模板中,硬盘上没有文件输出,生成的页面也没有图形。<br /><br />请问在mako template中,如何才能用python代码画出一个图形来呢?<br />谢谢!
    
    1 条回复 最后回复
    0
    • mrshellyM 离线
      mrshellyM 离线
      mrshelly
      写于 最后由 编辑
      #2

      图片 一般不能直接在 html 中使用.

      html 中. 要使用 img 标签才阔以显示图片.
      例如:

      <br />&lt;%<br />import base64<br />def draw_bar():<br />	fp = file(r&#039;test.png&#039;, &#039;rb&#039;)<br />	content = fp.read()<br />	fp.close()<br />	return &#039;&lt;img src=&quot;data:image/png;base64,%s&quot; /&gt;&#039; % base64.encodestring(content)<br /><br />%&gt;<br /><br />&lt;body&gt;<br />&nbsp; &nbsp; &lt;table&gt;<br />&nbsp; &nbsp; &nbsp; &lt;tr&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &lt;td&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ${draw_bar()}<br />&nbsp; &nbsp; &nbsp; &nbsp; &lt;/td&gt;<br />&nbsp; &nbsp; &nbsp; &lt;/tr&gt;<br />&nbsp; &nbsp; &lt;/table&gt;<br />&lt;/body&gt;<br /><br />
      
      1 条回复 最后回复
      0
      • J 离线
        J 离线
        jerry79
        写于 最后由 编辑
        #3

        mrshelly,太感谢了,按照你的方法终于搞定了。不过测试的时候有一个问题没有发现,今天正式使用却出现问题了。
        我将图片加入mako模版,收到的邮件,测试时一直使用thirdenbird或foxmail邮件客户端收邮件,所以没有任何问题,图片可以正常显示。
        但是同事却是使用QQ网页邮箱,在网页邮箱中,图片无法显示,而且也不是普通的被阻止,如果是被阻止,应该有提醒可以显示图片的。
        不仅是QQ邮箱,gmail网页邮箱也显示不了图片。
        请问这个大概是怎么回事呢?
        谢谢

        1 条回复 最后回复
        0
        • mrshellyM 离线
          mrshellyM 离线
          mrshelly
          写于 最后由 编辑
          #4

          安全问题...

          最简单的检查方法, 就是将 邮件 MIME 数据提出来, 然后还原后,查看邮件内容有哪些改变.  很大可能是 QQ Gmail 过滤掉了邮件中的内容...(一般来讲 图片内容 可能会被过滤) 因为毕竟有可能会造成客户端的流量耗用.

          1 条回复 最后回复
          0
          • J 离线
            J 离线
            jerry79
            写于 最后由 编辑
            #5

            gmail和QQ邮箱都不行,但是126没有问题,比对了一下两个邮箱的信息:
            126:

            <br />Content-Type: multipart/alternative; boundary=&quot;------------000908050304070300020106&quot;<br />MIME-Version: 1.0<br />This is a multi-part message in MIME format.<br />--------------000908050304070300020106<br />Content-Type: text/plain; charset=UTF-8; format=flowed<br />Content-Transfer-Encoding: 8bit<br />
            


            QQ:

            <br />Content-Type: multipart/mixed; boundary=&quot;===============1468844308==&quot;<br />MIME-Version: 1.0<br />--===============1468844308==<br />MIME-Version: 1.0<br />Content-Type: text/html; charset=&quot;utf-8&quot;<br />Content-Transfer-Encoding: base64<br />
            
            1 条回复 最后回复
            0
            • J 离线
              J 离线
              jerry79
              写于 最后由 编辑
              #6

              请问怎样才能修改Content-Type的类型?谢谢

              1) Content-Type: multipart/mixed
              它表明这封Email邮件中包含各种格式的MIME实体但没有具体给出每个实体的类型。

              2) Content-Type: multipart/alternative
              如果同一封Email邮件既以文本格式又以HTML格式发送,那么要使用Content-Type: multipart/alternative。这两种邮件格式实际上是显示同样的内容但是具有不同的编码。

              3) Content-Type: multipart/related
              用于在同一封邮件中发送HTML文本和图像或者是其他类似类型。

              1 条回复 最后回复
              0
              • J 离线
                J 离线
                jerry79
                写于 最后由 编辑
                #7

                查看QQ邮箱的html代码,<img moz-do-not-send="true" src="#">
                而126的html代码,<img moz-do-not-send="true" src="data:image/png;base64,iVBORw0KGgoA……>一推乱码应该是图片的编码
                确实是QQ邮箱直接将邮件过滤掉了,但是怎么才能让它不过滤呢?

                1 条回复 最后回复
                0
                • mrshellyM 离线
                  mrshellyM 离线
                  mrshelly
                  写于 最后由 编辑
                  #8

                  [quote author=jerry79 link=topic=2762.msg9320#msg9320 date=1329799731]
                  查看QQ邮箱的html代码,<img moz-do-not-send="true" src="#">
                  而126的html代码,<img moz-do-not-send="true" src="data:image/png;base64,iVBORw0KGgoA……>一推乱码应该是图片的编码
                  确实是QQ邮箱直接将邮件过滤掉了,但是怎么才能让它不过滤呢?
                  [/quote]


                  这个, 需要联系 马化腾....

                  1 条回复 最后回复
                  0
                  • mrshellyM 离线
                    mrshellyM 离线
                    mrshelly
                    写于 最后由 编辑
                    #9

                    给你指个方向.

                    自己用QQ给自己发一封带图片的邮件,然后查看源码. 再去修改对应的OE生成邮件代码. 以适应...

                    1 条回复 最后回复
                    0
                    • J 离线
                      J 离线
                      jerry79
                      写于 最后由 编辑
                      #10

                      这个我已经试过了,如果是普通嵌入图片发送,html代码是:
                      <img src="/cgi-bin/viewfile?f=34D57382734C493C6B9B739D37DEA9B25394D2E36D714BC2E09A8B0535E93F9C35E486B8F07A45D5F44ED22863B7135D9407D05DD78DB1872BB69719F80A2CA4C816A3FB8D7D2E80CAE87E80B954F1F00009FF1F81E90C92&amp;mailid=ZL0821-vhNI0WAizNKRbkQL1TRKZ22&amp;sid=txpTW_pUg53eJw1C">
                      但是我用模板发送邮件,如果不用base64,而是绝对地址的图片,也不行,如
                      <img src="/home/myhome/image.png" width="431" height="96"/>
                      收到的html代码确是如上的<img src="#">,好像就是图片根本没有随邮件发送过来。而且用绝对地址,连邮件客户端也看不到图片了,一直怀疑mako模板直接写<img>标签是否正确,但是找不到合适的参考。
                      郁闷死了,我还在google……

                      1 条回复 最后回复
                      0
                      • mrshellyM 离线
                        mrshellyM 离线
                        mrshelly
                        写于 最后由 编辑
                        #11

                        据我所知, 邮件中的图片, 一般不以 src="data: 方式存.. 你看看吧. 一般是会有个 cid 的....

                        推荐你用 foxmail 发一封带内嵌图片的邮件, 然后把邮件另存为 .eml 文件, 再用文本编辑器打开看看...

                        1 条回复 最后回复
                        0
                        • mrshellyM 离线
                          mrshellyM 离线
                          mrshelly
                          写于 最后由 编辑
                          #12

                          PS: 如果你把邮件使用数字证书签名了.或者加密了. 我想QQ一定不会去检查里面的内容... 我猜是这样...

                          1 条回复 最后回复
                          0

                          • 登录

                          • 没有帐号? 注册

                          • 登录或注册以进行搜索。
                          • 第一个帖子
                            最后一个帖子
                          0
                          • 版块
                          • 标签
                          • 热门
                          • 用户
                          • 群组