Code: Alles auswählen
example.com/foo => desktop_foo()
m.example.com/foo => mobile_foo()
Code: Alles auswählen
import bottle
class Router(bottle.Router):
def __init__(self, *args, **kwargs):
super(Router, self).__init__(*args, **kwargs)
self.subdomains = dict()
def match(self, environ):
router = super(Router, self)
domain = environ.get("HTTP_HOST")
if "." in domain:
domain = domain.split(".")[0]
try:
router = self.subdomains[domain].router
except KeyError:
print("No such subdomain: %s" % domain)
pass
return router.match(environ)
class Application(bottle.Bottle):
def __init__(self, *args, **kwargs):
super(Application, self).__init__(*args, **kwargs)
self.router = Router()
def register_subdomain(self, domain):
if domain in self.router.subdomains:
raise KeyError("subdomain '%s' already in use" % domain)
self.router.subdomains[domain] = bottle.Bottle()
return self.router.subdomains[domain]
if __name__ == '__main__':
default = Application()
mobile = default.register_subdomain("m")
@default.route("/foo")
def default_foo():
return "Hello from default version"
@mobile.route("/foo")
def mobile_foo():
return "Hello from mobile version"
bottle.run(default, host="localhost", port=8080, debug=True, reloader=True)
LG Glocke