0

我一直在使用Werkzeug来制作符合 WSGI 的应用程序。我正在尝试修改首页中的代码。

它的基本思想是你去 /hello URL,你会得到一个“Hello World!”。信息。你去 /hello/ 你得到“你好!”。例如,/hello/jeff 产生“Hello Jeff!”。无论如何,我要做的是在首页中放置一个带有文本框的表单,您可以在其中输入您的姓名,并将其提交给/hello。因此,如果您在表单中输入“Jeff”并提交,您会得到“Hello Jeff!” 信息。

但是,我不知道该怎么做。我需要将“名称”变量传递给 hello 模板,但我不知道如何。这是我的 index.html:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
  "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Index page</title>
</head>

<body>
<h1>Go to the <a href="${url_for('say_hello')}">default</a></h1>
<form name="helloform" action="${url_for('say_hello')}" method="post">
<input type="text" name="name">
<input type="submit">
</form>
</body>
</html>

可以预见,method="get" 也不起作用。

4

4 回答 4

1

以正确的方式去做:去向/hello?name=joe乔打招呼,等等。这就是 HTML/HTTP 的工作原理!URL后面的代码/hello只需name要从请求中获取参数(如果存在)并做出相应的响应。

于 2009-09-19T03:14:15.257 回答
0

HTML 表单有一个静态目标地址,action="/something"但您想根据用户输入更改地址。你有两个选择:

  1. 在提交表单之前,将 javascript 添加到 html 表单以更改目标地址(通过附加名称)。

  2. 在您的 Web 框架中编写一个新方法,该方法读取 GET 或 POST 变量并将表单指向那里。

于 2009-09-18T23:03:11.230 回答
-1

HTML 是基于 REST 原则的……每个 url 都应该是一个对象,就像一个人;不是一个动作,比如跟一个人打招呼。仅当您的 Web 应用程序通过查看其数据库知道内部是谁时,才让 URL 识别您想要问候的人。

如果您的 Web 应用程序没有名为 Joe 的对象,那么在其中设计包含 Joe 的 URL 不是正确的方法。您的特定 Web 应用程序是关于找出人们是谁并向他们发送问候消息。因此,您可能应该有一个 URL:/greeter,它查找在 GET 或 POST 请求(来自您的表单)中发送的信息,并显示一个问候语。如果它不知道与谁打招呼,它可以显示表格来查找。

在构建软件时,始终考虑您实际使用的对象——构成系统的组件。

于 2009-09-18T23:31:56.003 回答
-1

直接在您提供的页面链接 ( http://werkzeug.pocoo.org/ ) 上单击“单击此处”,您将获得 hello X 示例的代码。您似乎缺少的是:

Hello ${url_values['name']|h}!

在您的 html 模板中的某处(假设它是响应和请求的模板)

于 2009-09-18T22:31:30.870 回答