Bottle: 全局变量 'request' 未定义

3 投票
1 回答
2531 浏览
提问于 2025-04-19 17:11

我正在用Python创建一个基于网页的应用程序,用户可以在里面输入搜索内容,然后返回相关数据。我使用了Bottle这个框架来搭建网站。接着,我用OpenShift把它发布到网上。这是一个简单的提交表单,用户输入的搜索条件会在后面的部分使用:

@route('/')
def search():
    return '''
        <h1 align="center">Twitter Sentiment Analysis</h1>
        <p align="center">Enter what you would like to search in the search box below</p>
            <form action="/result" method="post" align="center">
                Search: <input name="search" type="text" />
                <input value="Search" type="submit" />
            </form>
        '''

@route('/result', method='POST')
def result():
    search = request.forms.get('search')
    return 'it worked'    

在使用Bottle进行测试时,一切都运行得很好,但当我尝试把它部署到OpenShift时,却出现了一个名称错误,提示“全局变量'request'未定义”。在测试时,使用Bottle一切正常,但在部署到OpenShift后就出问题了。有没有人知道这可能是什么原因呢?

1 个回答

6

看起来你还没有把请求(request)或者路由(route)导入到命名空间里:

from bottle import get, post, request # or route

@get('/login') # or @route('/login')
def login():
    return '''
        <form action="/login" method="post">
            Username: <input name="username" type="text" />
        ...        
    '''

@post('/login') # or @route('/login', method='POST')
def do_login():
    user = request.forms.get('username')
    pass = request.forms.get('password')
     ...

撰写回答