Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Flask Path or route parameters add (path)

  • path

  • Accept any path, including slashes:

from flask import Flask
app = Flask(__name__)

@app.route("/")
def main():
    return '''
Main<br>
<a href="/user/name">/user/name</a><br>
<a href="/user/other/dir">/user/other/dir</a><br>
<a href="/user/hi.html">/usre/hi.html</a><br>
'''

@app.route("/user/<path:fullpath>")
def api_info(fullpath):
    return fullpath
flask --app path_any run
import pytest
import path_any

@pytest.fixture()
def web():
    return path_any.app.test_client()

def test_app(web):
    rv = web.get('/')
    assert rv.status == '200 OK'
    assert b'Main<br>' in rv.data

@pytest.mark.parametrize('path,expected', [
    ('/user/name', 'name'),
    ('/user/other/dir', 'other/dir'),
    ('/user/hi.html', 'hi.html'),
    ])
def test_user(web, path, expected):
    rv = web.get(path)
    assert rv.status == '200 OK'
    assert rv.data.decode('utf-8') == expected

pytest