我正在编写一个简单的前端网页,它会采用一串单词并返回一个单词表计数。现在我可以查询字符串并将结果发布在同一页面上。但是,我想重定向并将结果发布到另一个页面上,应该是@post(/'result')
下面是我的代码,然而,它一直给我一个错误说:例外:
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 :(得分: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来使其工作(将其用作第二个参数)。