2013-04-23 64 views
1
@app.route('/', methods=['GET', 'POST']) 
def login(): 
    if request.method == 'GET': 
     if 'USER_TOKEN' in session: 
      return make_response(render_template('index.html')) 
     return make_response(render_template('login.html')) 
    if request.method == 'POST': 
     print 'data :', request.form 
     return make_response(render_template('index.html')) 

HTML瓶接收沒有數據的HTML POST

<form class="form-horizontal" action="/" method="POST"> 
    <div class="control-group"> 
     <label class="control-label" for="email">Email</label> 
     <div class="controls"> 
     <input type="text" id="email" placeholder="Email"> 
     </div> 
    </div> 
    <div class="control-group"> 
     <label class="control-label" for="password">Password</label> 
     <div class="controls"> 
     <input type="password" id="password" placeholder="Password"> 
     </div> 
    </div> 
    <div class="control-group"> 
     <div class="controls"> 
     <button type="submit" class="btn">Sign In</button> 
     </div> 
    </div> 
    </form> 

當我從HTML頁面提交的數據,我看到

data : ImmutableMultiDict([]) 

爲什麼數據丟失?

+1

我相信這是習慣性地在在輸入中包含'name'屬性的形式;) – Andbdrew 2013-04-23 04:46:53

回答

5

您缺少字段名稱(這是ImmutableMultiDict的密鑰,這就是爲什麼表單提交時它看起來爲空)。

變化

<input type="text" id="email" placeholder="Email"> 

<input name="<whatever_email_name>" type="text" id="email" placeholder="Email"> 

<input type="password" id="password" placeholder="Password"> 

<input name="<whatever_password_name>" type="password" id="password" placeholder="Password"> 
+0

這就是問題所在,你怎麼知道'name ='是需要的?它甚至不在Twitter-bootstrap文檔中(http://twitter.github.io/bootstrap/base-css.html#forms)。謝謝 – daydreamer 2013-04-23 04:51:03

+0

與twitter引導無關。給表單域賦名是HTML規範的一部分。 Twitter Bootstrap提供基本的UI功能,在設計師醒來之前馬上爲您的網站提供動力。 – Nemoden 2013-04-23 04:54:07

+0

我面臨的問題,但與郵遞員參與。我錯過了什麼? – karzler007 2016-05-29 18:00:10