Gibt es eine Möglichkeit, URLs mit optionalen URL-Parametern in Flask zu definieren? Im Wesentlichen tun, was ich möchte ist Regeln zu definieren, die für optional angegebene Sprachen erlauben:Optionale URL-Variablen
/
/de -> matches/(but doesn't collide with /profile)
/profile
/de/profile
Ich glaube, ich habe einen Weg gefunden, es zu tun, aber es geht entweder eine Änderung, wie Werkzeug zu machen und Flask bearbeitet die Anfrage (Affe-Patching oder Forking der Framework-Quelle). Dies scheint jedoch eine übermäßig komplexe Art und Weise zu sein, mit diesem Problem umzugehen. Gibt es einen einfacheren Weg, dies zu tun, den ich übersehe?
Edit:
Basierend auf Brians Antwort, hier ist, was ich kam mit:
app.py:
from loc import l10n
def create_app(config):
app = Flask(__name__)
app.config.from_pyfile(config)
bp = l10n.Blueprint()
bp.add_url_rule('/', 'home', lambda lang_code: lang_code)
bp.add_url_rule('/profile', 'profile', lambda lang_code: 'profile: %s' %
lang_code)
bp.register_app(app)
return app
if __name__ == '__main__':
create_app('dev.cfg').run()
loc/l10ln.py
class Blueprint(Blueprint_):
def __init__(self):
Blueprint_.__init__(self, 'loc', __name__)
def register_app(self, app):
app.register_blueprint(self, url_defaults={'lang_code': 'en'})
app.register_blueprint(self, url_prefix='/<lang_code>')
self.app = app
(ich habe lang_code
aus der Variablenliste zu ziehen noch nicht bekommen, wird aber, dass in Kürze tun)
Jetzt imho das ist nur heiß.
Definitiv der Weg zu gehen, imho, angesichts der (relativen) neuen Schärfe von Blaupausen –