How can I get current base URI in flask?

38,783

Solution 1

You can use the base_url method on flask's request function.

from flask import Flask, request

app = Flask(__name__)

@app.route('/foo')
def index():
    return request.base_url
    

if __name__ == '__main__':
    app.run()

This returns the following if the app route is /foo:

http://localhost:5000/foo

Solution 2

Use flask.request.url to retrieve your requested url. Have a look at: http://flask.pocoo.org/docs/1.0/api/#flask.Request (or the v0.12 docs)

Share:
38,783
Ravi Bhushan
Author by

Ravi Bhushan

Updated on July 24, 2020

Comments

  • Ravi Bhushan
    Ravi Bhushan almost 4 years

    In below code, i want to store URL in a variable to check error on which URL error occured.

    @app.route('/flights', methods=['GET'])
    def get_flight():
        flight_data= mongo.db.flight_details
        info = []
        for index in flight_data.find():
            info.append({'flight_name': index['flight_name'], 'flight_no': index['flight_no'], 'total_seat': index['total_seat'] })
        if request.headers['Accept'] == 'application/xml':
            template = render_template('data.xml', info=info)
            xml_response = make_response(template)
            xml_response.headers['Accept'] = 'application/xml'
            logger.info('sucessful got data')
            return xml_response
        elif request.headers['Accept'] == 'application/json':
            logger.info('sucessful got data')
            return jsonify(info)
    

    Output:

    * Restarting with stat
     * Debugger is active!
     * Debugger PIN: 165-678-508
     * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
    127.0.0.1 - - [28/Mar/2017 10:44:53] "GET /flights HTTP/1.1" 200 -
    

    I want this message

    "127.0.0.1 - - [28/Mar/2017 10:44:53] "GET /flights HTTP/1.1" 200 -"
    

    should be stored in a variable or how can I get current URL that is executing?

  • Ravi Bhushan
    Ravi Bhushan about 7 years
    127.0.0.1 - - [28/Mar/2017 10:44:53] "GET /flights HTTP/1.1" 200 -... if want to return whole thing , then what have i to do ?
  • Neill Herbst
    Neill Herbst about 7 years
    @RaviBhushan I'm not aware of any method to capture the standard output of the flask server.
  • Ravi Bhushan
    Ravi Bhushan about 7 years
    ok.... thanx for answer