Có cách nào để xác định URL có tham số URL tùy chọn trong Flask không? Về cơ bản, những gì tôi muốn làm là xác định quy tắc cho phép cho các ngôn ngữ tùy chọn chỉ định:Biến URL tùy chọn
/
/de -> matches/(but doesn't collide with /profile)
/profile
/de/profile
Tôi nghĩ rằng tôi đã tìm ra một cách để làm điều đó, nhưng nó liên quan đến một trong hai thực hiện một thay đổi như thế nào Werkzeug và Flask xử lý yêu cầu (hoặc khỉ vá hoặc giả mạo nguồn khung). Điều này có vẻ như một cách quá phức tạp để đối phó với vấn đề này mặc dù .. Có cách nào dễ dàng hơn để làm điều này mà tôi nhìn?
Edit:
Dựa trên câu trả lời của Brian, đây là những gì tôi đã đưa ra:
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
(Tôi chưa nhận được để kéo lang_code
từ danh sách biến nhưng sẽ sớm thực hiện việc đó)
Bây giờ đó chỉ là imho nóng.
Chắc chắn là con đường để đi imho, với độ nóng mới (tương đối) của bản thiết kế –