Saya mengerti bahwa Flask memiliki konverter int, float dan path, tetapi aplikasi yang kami kembangkan memiliki pola yang lebih kompleks dalam URL-nya.
Adakah cara kita bisa menggunakan ekspresi reguler, seperti di Django?
Meskipun Armin mengalahkan saya dengan jawaban yang diterima, saya pikir saya akan menunjukkan contoh singkat tentang bagaimana saya menerapkan pencocok regex di Flask kalau-kalau ada yang menginginkan contoh yang berfungsi tentang bagaimana ini dapat dilakukan.
from flask import Flask
from werkzeug.routing import BaseConverter
app = Flask(__name__)
class RegexConverter(BaseConverter):
def __init__(self, url_map, *items):
super(RegexConverter, self).__init__(url_map)
self.regex = items[0]
app.url_map.converters['regex'] = RegexConverter
@app.route('/<regex("[abcABC0-9]{4,6}"):uid>-<slug>/')
def example(uid, slug):
return "uid: %s, slug: %s" % (uid, slug)
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=5000)
URL ini harus dikembalikan dengan 200: http: // localhost: 5000 / abc0-foo /
URL ini akan kembali dengan 404: http: // localhost: 5000 / abcd-foo /
self.regex
, tetapi di mana pertandingan terjadi?Anda dapat mengaitkan konverter kustom yang cocok dengan ekspresi arbitrer: Konverter Kustom
sumber
to_python
dilakukannyaAnda juga dapat menulis semua jenis rute dan melakukan perutean kompleks dalam metode:
Ini akan cocok dengan permintaan apa pun. Lihat detail lebih lanjut di sini: URL Catch-All .
sumber