Search code examples
pythonpython-2.7openshiftbottle

Bottle: Global Variable 'request' is not defined


I am creating a web based application with python where the user enters a search query and data is returned. I used bottle to provide the web framework for this. Openshift is then used to post online. It is a simple post form and the search criteria is then used in the next section using this:

@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'    

When using bottle and tested it, it worked fine, but when I try to deploy it to OpenShift, I get a name error, "global variable 'request' is not defined" when in testing it worked perfectly with just bottle before deploying to openshift, does anyone know why this may be?


Solution

  • It seems like you haven't imported the request or route to namespace:

    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')
         ...