Perl Dancer:从表单中获取数据

Perl Dancer: Getting data from forms

我是 Perl 新手,想知道:

我正在努力处理以下示例。我的 index.tt 文件中有这样一个表格:

 <form action="/hello/:username" method="get" name="">
        <h3>Please log in </h3>
          <input type="text" name="username" required=""/>
          <input type="password" name="senha" required=""/>               
          <button name="Submit" value="Login" type="Submit">Login</button>              
    </form>     

我想使用表单中的用户名并构建一个 returns 输入信息的页面。所以我检查了 this 教程,并在我的 Proyecto.pm 中完成了以下操作:

package Proyecto;
use Dancer ':syntax';
our $VERSION = '0.1';    


get '/' => sub {
template 'index';
};

get '/hello/:username' => sub {
my $username= params('username');
return "Hola $username";
};

但是没用。你们知道这里缺少什么吗?谢谢!

<form action="/hello/:username" method="get" name="">

将准确调用 /hello/:username 而无需替换。 HTML 无法神奇地替换部分源代码——无论后端使用的是 Dancer 还是其他任何东西。 (JavaScript 可以做到。)

get '/hello/:username' => sub {

匹配对 /hello/ 的所有调用,后跟任何字符串,如 /hello/chungel/hello/Larry/hello/:username。最后一个会将值 username 设置为 param('username').

您还添加了一个带有 name="username" 的表单域,它以一个键的两个值结束(一个来自 URL,一个来自表单)。

最后:使用固定的 URL 作为表单操作:

<form action="/hello" method="get" name="">

get '/hello' => sub {

将用户名作为 HTML 表单值(和 HTTP 参数)传递在这里没有任何优势。

如果你真的想在 URL 中使用用户名,首先在路由定义中使用不同的名称:

get '/hello/:url_username' => sub {
    return param('url_username');

接下来您需要使用 JavaScript 重写表单操作或使用 a Dancer before hook.

重写目标 URL