2009-09-18 59 views
0

我一直在使用Werkzeug来制作符合WSGI的应用程序。我试图修改头版中的代码。帮助Python在网络中

它的基本思想是,你去到/你好的URL,你会得到一个“Hello World!”信息。你去/你好/你得到“你好!”。例如,/ hello/jeff会产生“Hello Jeff!”。无论如何,我想要做的就是在首页添加一个表单,并在其中输入您的姓名,然后将其提交给/ hello。所以如果你在表单中输入“Jeff”并提交,你会得到“Hello Jeff!”信息。

但是,我不知道如何做到这一点。我需要将“name”变量传递给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”也无法预测。

回答

1

正确的做法:前往/hello?name=joe向joe问好,等等。这就是HTML/HTTP是如何设计工作的!您的/hello网址后面的代码只需从请求中获取name参数(如果存在),并作出相应响应。

-1

当您点击'Click here'时,直接在您提供的页面链接(http://werkzeug.pocoo.org/)上,您会得到hello X示例的代码。你似乎缺少什么:

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

某处你的HTML模板(假设它是响应模板以及为要求)

0

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

  1. 到HTML表单添加JavaScript来 变化的目标地址(通过 将名称) 提交表单之前。

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

+0

添加JavaScript来做到这一点是一个非常糟糕的主意。这意味着您的网站链接(与HTML获得的基本信息一样)在没有javascript的浏览器上被打破(其中包括许多禁用的用户等,并可能被视为(非法)歧视。 – 2009-09-18 23:26:24

-1

HTML基于REST原则......每个url都应该是一个对象,就像一个人;不是一个动作,就像向一个人问好。通过查看其数据库,只有当您的Web应用程序知道内部人员时,才能通过URL标识您想问候的人。

如果您的web应用程序没有名为Joe的对象,那么使用Joe设计URL并不是正确的方法。您的特定Web应用程序是关于找出谁是人,并向他们发送问候消息。所以,你可能应该有一个URL:/ greeter,它查找GET或POST请求(从你的表单)发送的信息,并显示一个问候。如果不知道该打招呼的人,可以通过显示表单找出答案。

始终以实际使用的对象 - 组成系统的组件 - 构建软件时的想法来思考。