Example – Subroutes¶
The routes
decorator lets you set up different routes easily, but it can be cumbersome to write many similar routes.
If you need to write similar routes, the subroute
function can help.
subroute
is a context manager within whose scope all invocations of route
will have a prefix added.
Here is an example app that has routes for /branch/lair
, /branch/crypt
, and /branch/swamp
all defined in a with app.subroute()
block.
from klein import Klein
app = Klein()
with app.subroute("/branch") as app:
@app.route("/lair")
def lair(request):
return b"These stairs lead to the lair of beasts."
@app.route("/crypt")
def crypt(request):
return b"These stairs lead to an ancient crypt."
@app.route("/swamp")
def swamp(request):
return b"A stair to a swampy wasteland."
app.run("localhost", 8080)
The subroute method is also available globally if that is your preferred klein pattern.
from klein import run, subroute
with subroute("/branch") as app:
@app.route("/twilightforest")
def twighlightforest(request):
return b"These stairs lead to the twilight forest."
app.run("localhost", 8080)