2009-09-18 57 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請求(從你的表單)發送的信息,並顯示一個問候。如果不知道該打招呼的人,可以通過顯示錶單找出答案。

始終以實際使用的對象 - 組成系統的組件 - 構建軟件時的想法來思考。