Czy istnieje sposób definiowania adresów URL z opcjonalnymi parametrami URL w Flasku? Zasadniczo, co chciałbym zrobić, to określić zasady, które pozwalają na ewentualnie określonych językach:Opcjonalne zmienne URL
/
/de -> matches/(but doesn't collide with /profile)
/profile
/de/profile
Chyba wymyśliliśmy sposób, aby to zrobić, ale to wiąże się zarówno do dokonywania zmian i jak Werkzeug Flask obsługuje żądanie (albo łatanie małpy, albo rozwidlenie szkieletu). Wydaje się to być zbyt skomplikowanym sposobem radzenia sobie z tym problemem. Czy istnieje łatwiejszy sposób na zrobienie tego z pominięciem?
Edit:
oparciu o odpowiedź Briana, oto co wymyśliłem:
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
(Nie mam jeszcze okazji wyciągnąć lang_code
z listy zmiennych, ale wkrótce to zrobię)
Teraz to tylko gorące imho.
Zdecydowanie sposób na imho, biorąc pod uwagę (względną) nową gorliwość planów –