免费注册 查看新帖 |

Chinaunix

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

求助: 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 模块中的哪一个地方与此相关? 谢谢!

论坛徽章:
0
2 [报告]
发表于 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
3 [报告]
发表于 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
4 [报告]
发表于 2010-10-14 13:51 |显示全部楼层
经过多次尝试问题解决了! 在图片路径前加了 / 就可以了. 如下:
<p>[% message %]</p>
<img src="/t.jpg" />

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

论坛徽章:
0
5 [报告]
发表于 2010-10-14 13:54 |显示全部楼层
回复 7# climby

是的, 怪我前面描述不清楚. 非常感谢您的提示!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP