2014-10-08 64 views
0

即時通訊編寫一個簡單的前端網頁,將採取一串單詞,並返回一個單詞表count。現在,我可以查詢字符串並將結果發佈到同一頁面上。不過,我想重定向並與應@Post(/「結果」)蟒蛇瓶框架後重定向

下面是我的代碼,但是,它不斷給我一個錯誤說張貼另一頁結果:異常:

AttributeError ("'NoneType' object has no attribute 'split'",) 
Traceback (most recent call last): 
    File "/Library/Python/2.7/site-packages/bottle.py", line 862, in _handle 
    return route.call(**args) 
    File "/Library/Python/2.7/site-packages/bottle.py", line 1729, in wrapper 
    rv = callback(*a, **ka) 
    File "frontEnd.py", line 16, in result 
    File "frontEnd.py", line 23, in query 
    for word in keyString.split(): 
AttributeError: 'NoneType' object has no attribute 'split' 

我應該更改什麼,以便將結果表發佈到重定向的頁面/結果而不會導致錯誤?

@get('/') 
def search(): 
    return '''<h1>Search</h1><form action="/" method="post"> Keyword:<input name="keywords"type="text"/><input value="GO" type="submit" /> </form>''' 

@post('/') 
def do_search(): 
    redirect('/result') 

@post('/result') 
def result(wc,keyString): 
    keyString = request.forms.get('keywords') 
    wc = query(keyString) 
    return wordCountHTML(wc,keyString) 

回答

0

我猜第一個請求的POST參數在重定向中迷路了。我不知道你想達到什麼,但你可以完全由在第一時間使用不同的POST URL省略重定向:

@get('/') 
def search(): 
    return '''<h1>Search</h1><form action="/result" method="post"> Keyword:<input name="keywords"type="text"/><input value="GO" type="submit" /> </form>''' 

@post('/result') 
def result(wc,keyString): 
    keyString = request.forms.get('keywords') 
    wc = query(keyString) 
    return wordCountHTML(wc,keyString) 

而且,請注意,對於重定向幾個HTTP代碼(見https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#3xx_Redirection )。據我所知,Bottle 0.7+使用HTTP響應代碼303.您可以嘗試在重定向中使用重定向代碼307,而不是使其工作(將其用作第二個參數)。