免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3096 | 回复: 9
打印 上一主题 下一主题

求助: Template Toolkit 初学, 关于路径配置的疑问 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-10-13 20:03 |只看该作者 |倒序浏览
本帖最后由 木卫十二 于 2010-10-13 20:09 编辑

新手学习 Template Toolkit, 有一个路径的问题请指个方向, 谢谢!

我在模板中直接使用 CSS 和 插入img 图片, 但是通过 TT 后无法找到. 应该怎么设置此处呢?

在 Debian 的 /usr/lib/cgi-bin/ 目录下创建如下两个文件, 同样在此目录下, 还有 mycss.css 和 t.jpg 两个文件.
main.cgi

  1. #!/usr/bin/perl -w
  2. use Template;
  3. use CGI;

  4. my $file = 'template.tt';
  5. my $vars = {
  6.    message  => "Hello World\n"
  7. };

  8. my $cgi = CGI->new();
  9. my $template = Template->new();

  10. print
  11.     $cgi->header(
  12.             -type=>'text/html',
  13.             -charset=>'utf-8');

  14. $template->process($file, $vars)
  15.     || die "Template process failed: ", $template->error(), "\n";
复制代码
template.tt

  1. <head>
  2.     <title>This is title</title>
  3.     <link href="mycss.css" rel="stylesheet" type="text/css" />
  4. </head>
  5. <body>
  6.     Get message: [% message %]
  7.     <br />
  8.     Get Image:
  9.     <img src="t.jpg" />
  10. </body>
复制代码
但在客户端浏览器中, http://ip/cgi-bin/t.jpg 肯定是无法打开的, 但如何配置呢? 或者在 Template 模块中的哪一个地方与此相关? 谢谢!

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
2 [报告]
发表于 2010-10-13 20:35 |只看该作者

论坛徽章:
0
3 [报告]
发表于 2010-10-13 21:09 |只看该作者
这和Template 没什么关系。 就是普通网页, 取决于你的web服务器怎么设置的。

论坛徽章:
0
4 [报告]
发表于 2010-10-13 23:31 |只看该作者
本帖最后由 木卫十二 于 2010-10-13 23:42 编辑

感謝两位的回复。因为英語不怎么好,啃了半天CPAN文档还是没找到头绪。

这个问题可能对熟悉的人很简单吧。

我运行CGI程序,路径都是在cgi-bin/(http://192.168.1.1/cgi-bin/...)目录下,但此目录下是不能直接通过浏览器访问图片或CSS文件的。

Debian Apache配置在/var/www/目录下的文件可直接访问。难道要修改Apache配置,使/usr/lib/cgi-bin目录可以直接通过浏览器访问?我觉得这应该不是解决此问题的办法。

应该在哪配置才能让模板中图片的相对路径( <img src="t.jpg" /> )能直接访问到? 目前是 http://192.168.1.1/cgi-bin/t.jpg 肯定是打不开的。
或许在Template中有相应的配置项?或者是我的理解有错误?
希望能给点拔一下。谢谢。

论坛徽章:
0
5 [报告]
发表于 2010-10-14 13:11 |只看该作者
其实在http://search.cpan.org/~abw/Template-Toolkit-2.22/lib/Template.pm的例子里面已经讲了,估计你没有注意到。

  1. use Template;
  2.    
  3.     # some useful options (see below for full list)
  4.     my $config = {
  5.         INCLUDE_PATH => '/search/path',  # or list ref
  6.         INTERPOLATE  => 1,               # expand "$var" in plain text
  7.         POST_CHOMP   => 1,               # cleanup whitespace
  8.         PRE_PROCESS  => 'header',        # prefix each template
  9.         EVAL_PERL    => 1,               # evaluate Perl code blocks
  10.     };
  11.    
  12.     # create Template object
  13.     my $template = Template->new($config);
复制代码
其中的   INCLUDE_PATH  就是设置 模板文件的搜索路径的,默认情况下可以使用: 分割多个路径。 只有告诉了template 到那里找到你写好的模板文件,才能将模板渲染成最终的html的。

论坛徽章:
0
6 [报告]
发表于 2010-10-14 13:40 |只看该作者
本帖最后由 木卫十二 于 2010-10-14 13:42 编辑

感谢楼上的耐心回复.
但我使用过这个参数, 并未起作用. 详细过程如下:

Debian系统, 分两个目录:
/usr/lib/cgi-bin/ 为 cgi 文件的目录. 目前只有一个文件: main.cgi
/var/www/ 为模板文件的目录. 目前有两个文件: template.tt 与 t.jpg

main.cgi
  1. #!/usr/bin/perl -wT
  2. use Template;
  3. use CGI;

  4. my $file = 'template.tt';
  5. my $vars = { message  => "Hello World\n"};
  6. my $config = {
  7.     INCLUDE_PATH => '/var/www',
  8.     INTERPOLATE  => 1,               # expand "$var" in plain text
  9.     POST_CHOMP   => 1,               # cleanup whitespace
  10.     PRE_PROCESS  => 'template.tt',        # prefix each template
  11.     EVAL_PERL    => 1,               # evaluate Perl code blocks
  12. };

  13. my $cgi = CGI->new();
  14. my $template = Template->new($config);

  15. print $cgi->header();
  16. $template->process($file, $vars);
复制代码
template.tt
  1. <p>[% message %]</p>
  2. <img src="t.jpg" />
复制代码
在浏览器执行 http://192.168.1.1/cgi-bin/main.cgi
结果无法显示 t.jpg 图片. 查看其源码为 http ://192.168.1.1/cgi-bin/t.jpg
这里是问题所在, 应该怎么配置才能使图片被显示? 因为怎样配置都会有个/cgi-bin/夹在中间, 使文件无法显示.
谢谢!

论坛徽章:
0
7 [报告]
发表于 2010-10-14 13:48 |只看该作者
原来只是图片无法显示阿。我还以为是模板无法显示出来呢。
写成这样看看

  1. <img src=".../t.jpg" />
复制代码

论坛徽章:
0
8 [报告]
发表于 2010-10-14 13:51 |只看该作者
经过多次尝试问题解决了! 在图片路径前加了 / 就可以了. 如下:
<p>[% message %]</p>
<img src="/t.jpg" />

再次感谢楼上几位的回复. 新手问题, 见笑了.

论坛徽章:
0
9 [报告]
发表于 2010-10-14 13:54 |只看该作者
回复 7# climby

是的, 怪我前面描述不清楚. 非常感谢您的提示!

论坛徽章:
0
10 [报告]
发表于 2010-10-16 21:44 |只看该作者
学习perl中
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP