【问题标题】:Help with Python in the web在网络中使用 Python 帮助
【发布时间】:2010-11-29 15:22:39
【问题描述】:

我一直在使用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" 也不起作用,可以预见。

【问题讨论】:

    标签: python wsgi werkzeug


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 添加javascript来做到这一点是一个非常糟糕的主意。这意味着您的网站链接(与 HTML 一样基本)在任何没有 javascript 的浏览器上都被破坏了(其中包括许多禁用用户等,并且可能被视为(非法)歧视。
      【解决方案3】:

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

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

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-03-16
          • 1970-01-01
          • 2017-12-09
          • 2014-02-15
          • 2011-02-28
          • 1970-01-01
          • 2012-03-08
          • 1970-01-01
          相关资源
          最近更新 更多