标签: dancer

perl dancer:将数据库信息传递给模板

关注舞者教程:

http://search.cpan.org/dist/Dancer/lib/Dancer/Tutorial.pod

我正在使用我自己的sqlite3数据库与此架构

CREATE TABLE if not exists location (location_code TEXT PRIMARY KEY, name TEXT, stations INTEGER);
CREATE TABLE if not exists session (id INTEGER PRIMARY KEY, date TEXT, sessions INTEGER, location_code TEXT, FOREIGN KEY(location_code) REFERENCES location(location_code));
Run Code Online (Sandbox Code Playgroud)

我的舞者代码(helloWorld.pm)用于数据库:

package helloWorld;
use Dancer;
use DBI;
use File::Spec;
use File::Slurp;
use Template;

our $VERSION = '0.1';

set 'template' => 'template_toolkit';
set 'logger'   => 'console';

my $base_dir = qq(/home/automation/scripts/Area51/perl/dancer);

# database crap
sub connect_db {
 my $db = qw(/home/automation/scripts/Area51/perl/dancer/sessions.sqlite);
 my $dbh = DBI->connect("dbi:SQLite:dbname=$db", …
Run Code Online (Sandbox Code Playgroud)

perl templates dancer

2
推荐指数
1
解决办法
3384
查看次数

Dancer 插件加载模板

如何从不在“app/views”目录中的 Dancer::Plugin 加载模板而不更改视图默认目录?

这不起作用/它将默认视图路径添加到文件路径/:

package Dancer::Plugin::MyPlugin;
use Dancer ':syntax';
use Dancer::Plugin;

any '/test' => sub {
    template '/path_to_template/test.tt' => {
    };
};

register_plugin;

1;
Run Code Online (Sandbox Code Playgroud)

perl plugins dancer

2
推荐指数
1
解决办法
632
查看次数

如何在舞者中显示数组项目?

我尝试在舞者中显示一个数组项,这里是代码:

get '/' => sub {
  my @rows = ('aaa','bbb','ccc');
  template 'crud.tt', {'rows' => \@rows};
};
Run Code Online (Sandbox Code Playgroud)

模板是:

  <h2><% $rows[1] %></h2>
  <h2><% rows[1] %></h2>
  <% FOREACH r IN rows %>
    <p><% r %></p>
  <% END %>
Run Code Online (Sandbox Code Playgroud)

在h2元素中什么都没显示,正确的方法是什么?

perl dancer

2
推荐指数
1
解决办法
889
查看次数

访问授权标头

如何使用 Perl Dancer 访问请求的授权标头?

我已经测试了我的客户端,它成功地传递了Authorization标头,但它没有出现在request->headers哈希中。我可以通过简单地拼写错误或在前面附加一个来让它显示出来X-,但我正在制作一个 API,并且希望使用传统标头来传递请求签名以进行身份​​验证。

perl dancer

2
推荐指数
1
解决办法
2144
查看次数

有没有办法将变量绑定到模板工具包模板?

我有一个数组,我传递给TT文件,用于填充导航栏.

我正在使用主模板作为主体内容的基础和子模板.

我想知道是否可以声明'主模板应该总是接收这个数组',而不是每次加载视图时都必须传递这个数组(哦,是的,我正在使用Dancer btw:P),ex :

get '/' => sub {
    template 'index', { for_all_i_know => $this_never_changes }
}

get '/about' => sub {
    template 'about', { for_all_i_know => $this_never_changes }
}
Run Code Online (Sandbox Code Playgroud)

而不是那样做,有没有办法清理它?就像是:

bind template 'main' { for_all_i_know => $this_never_changes };
Run Code Online (Sandbox Code Playgroud)

那样我就可以这样做:

get '/' => sub {
    template 'index';
}
Run Code Online (Sandbox Code Playgroud)

并且主模板仍会加载变量'for_all_i_know'

template-toolkit dancer

2
推荐指数
1
解决办法
103
查看次数

Dancer中如何接收json?

我对 Perl 框架 Dancer 非常陌生。截至目前,我有一个 get http 侦听器正在工作。我有一个 Angular 框架试图将 json 字符串发布到 Dancer。我如何检索 json 并可能将其分配给标量变量($json)。

get '/games' => sub {
    header 'Access-Control-Allow-Origin' => '*';
    &loadgames();
    return $games;
};

post '/newgame' => sub {
    header 'Access-Control-Allow-Origin' => '*';
    #what should i put here to retrieve the json string
    #I plan to pass the json string to a sub to convert to XML
};
Run Code Online (Sandbox Code Playgroud)

我不确定我是否选择 Dancer 作为获取和发布数据的后端框架。

谢谢您的帮助!

perl dancer

2
推荐指数
1
解决办法
1482
查看次数

在Dancer2的config.yml中配置Template :: Toolkit(修剪空白)

我正在使用Dancer2来构建Web应用程序.它工作得很好但是当我在浏览器中查看源代码时,生成的HTML源代码充满了分散的空白,就像这样

    <tr>
        <td>2</td>



            <td>Cheeseburger</td>

        <td>4.50&nbsp;€</td>
    </tr>
Run Code Online (Sandbox Code Playgroud)

我的模板<% ... %>在现在空白的地方有代码.我更喜欢它看起来像这样:

    <tr>
        <td>2</td>
            <td>Cheeseburger</td>
        <td>4.50&nbsp;€</td>
    </tr>
Run Code Online (Sandbox Code Playgroud)

或者,甚至更好:

<tr><td>2</td><td>Cheeseburger</td><td>4.50&nbsp;€</td></tr>
Run Code Online (Sandbox Code Playgroud)

我正在使用Template :: Toolkit,并认为该TRIM属性正是我需要的,并将其添加到我的config.yml:

template: "template_toolkit"
session: "YAML"

engines:
  session:
    YAML:
      cookie_duration: 6 months
  template:
    template_toolkit:
      start_tag: '<%'
      end_tag:   '%>'
      TRIM:      '1'
Run Code Online (Sandbox Code Playgroud)

但这不起作用.我已经改变start_tagend_tag不同的东西(验证此文件被读取)和实际工作.但是TRIM选项没有.

我使用了错误的选项或在错误的地方提供它吗?我所做的所有谷歌搜索都展示了如何以编程方式设置TT选项,例如在这个答案中.但由于我没有明确地实例化TT相关的任何内容,我甚至不知道应该在哪里放置这样的代码.


我创建了我的应用程序dancer2 -a so.

意见/ index.tt

<table>
    <tbody>
        <% FOREACH item in group.items %>
            <tr>
                <td><% item.order_num %></td>
                <%# one-line comment %>
                <%# one-line …
Run Code Online (Sandbox Code Playgroud)

perl template-engine dancer

2
推荐指数
1
解决办法
199
查看次数

为什么perl舞者页面缓慢呈现(当我没有连接到互联网时)?

我正在运行Dancer并发现它很慢 - 页面需要很长时间才能渲染.

这是Dancer :: Introduction的示例代码:

#!/usr/bin/perl
# make this script a webapp
use Dancer;
# declare routes/actions
get '/' => sub {
    "Hello World";
};
get '/hello/:name' => sub {
    "Hello ".param('name');
};
# run the webserver
Dancer->dance;
Run Code Online (Sandbox Code Playgroud)

它需要我的浏览器10秒钟来获取和呈现响应(在firefox中使用firebug).

舞者的消息:

[20734]  core @0.000228> request: GET / from 192.168.1.101 in /usr/lib/perl5/site_perl/5.8.8/Dancer/Handler.pm l. 57
[20734]  core @0.000809> [hit #44]trying to match `/' against /^\/$/ in /usr/lib/perl5/site_perl/5.8.8/Dancer/Route.pm l. 84
[20734]  core @0.000953> [hit #44]  --> got …
Run Code Online (Sandbox Code Playgroud)

perl dancer

1
推荐指数
1
解决办法
1033
查看次数

舞者的utf8而不是剧本

这是我之前关于显示unicode字符串差异的问题的后续内容.事实证明,字符串看起来是相同的,但是在其中一个字符串中,UTF8标志处于打开状态.

SV = PVMG(0x4cca750) at 0x4b3fc90
 REFCNT = 1
 FLAGS = (PADMY,POK,pPOK,UTF8)
 IV = 0
 NV = 0
 PV = 0x1eda410 "flurbe"\0 [UTF8 "flurbe"]
 CUR = 6
 LEN = 16
Run Code Online (Sandbox Code Playgroud)

VS

SV = PV(0xf28090) at 0xf4b6a0
 REFCNT = 1
 FLAGS = (PADMY,POK,pPOK)
 PV = 0xf37b90 "flurbe"\0
 CUR = 6
 LEN = 16
Run Code Online (Sandbox Code Playgroud)

当我加密字符串时,这似乎会产生sha512哈希值之间的差异.据我所知,舞者是第一个产生utf8的结果,我的另一个脚本只是一个命令行,没有使用舞者,我怎么能强迫它以同样的方式行事呢?

unicode perl dancer

1
推荐指数
1
解决办法
402
查看次数

perl dancer:foreach in template只打印第一个值

我在Dancer中有一个非常简单的问题:我有一系列名字,我想在模板中打印每一个.这些名称来自外部源(不是数据库).但是,当我尝试对模板中的列表进行foreach时,我只得到第一个值.

码:

use Dancer;
use Template;

set 'template' => 'template_toolkit';

get '/' => sub {
    my @list = ("one","two","three");
    template 'list.tt', {
            'values' => @list,
    };
};
dance;
Run Code Online (Sandbox Code Playgroud)

和模板:

<ul>
    <%FOREACH item IN values %>
        <li><% item %></li>
    <%END%>
</ul>
Run Code Online (Sandbox Code Playgroud)

这仅输出具有单个项目"一个"的列表.我错过了什么?

perl template-toolkit dancer

0
推荐指数
2
解决办法
1621
查看次数