আমি বুঝতে পারি যে ফ্লাস্কের অন্তর্নিহিত, ভাসমান এবং পাথ রূপান্তরকারী রয়েছে তবে আমরা যে অ্যাপ্লিকেশনটি বিকাশ করছি তার URL গুলিতে আরও জটিল নিদর্শন রয়েছে।
জাঙ্গোর মতো আমরা কীভাবে নিয়মিত ভাব প্রকাশ করতে পারি?
আমি বুঝতে পারি যে ফ্লাস্কের অন্তর্নিহিত, ভাসমান এবং পাথ রূপান্তরকারী রয়েছে তবে আমরা যে অ্যাপ্লিকেশনটি বিকাশ করছি তার URL গুলিতে আরও জটিল নিদর্শন রয়েছে।
জাঙ্গোর মতো আমরা কীভাবে নিয়মিত ভাব প্রকাশ করতে পারি?
উত্তর:
যদিও আরমিন আমাকে গ্রহণযোগ্য উত্তর দিয়ে মুষ্টিতে মারধর করেছিল আমি ভেবেছিলাম যে কেউ যদি এটি কীভাবে করা যায় তার একটি কার্যকরী উদাহরণ চান তবে আমি কীভাবে ফ্লাস্কে একটি রেজেক্স ম্যাচার প্রয়োগ করেছি তার সংক্ষিপ্ত উদাহরণটি দেখাব।
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)
এই ইউআরএলটি 200: http: // লোকালহোস্ট: 5000 / abc0-foo / দিয়ে ফিরে আসা উচিত
এই ইউআরএল 404: http: // লোকালহোস্ট: 5000 / abcd-foo / দিয়ে ফিরে আসবে
self.regex
আছে তবে ম্যাচটি কোথায় ঘটে?
স্বেচ্ছাসেবী এক্সপ্রেশনগুলির সাথে মেলে এমন কাস্টম রূপান্তরকারীগুলিতে আপনি হুক করতে পারেন: কাস্টম রূপান্তরকারী
from random import randrange
from werkzeug.routing import Rule, Map, BaseConverter, ValidationError
class BooleanConverter(BaseConverter):
def __init__(self, url_map, randomify=False):
super(BooleanConverter, self).__init__(url_map)
self.randomify = randomify
self.regex = '(?:yes|no|maybe)'
def to_python(self, value):
if value == 'maybe':
if self.randomify:
return not randrange(2)
raise ValidationError()
return value == 'yes'
def to_url(self, value):
return value and 'yes' or 'no'
url_map = Map([
Rule('/vote/<bool:werkzeug_rocks>', endpoint='vote'),
Rule('/vote/<bool(randomify=True):foo>', endpoint='foo')
], converters={'bool': BooleanConverter})
to_python
করে
আপনি সমস্ত ধরণের রুট একটি ক্যাচ লিখতে এবং পদ্ধতিটির মধ্যে জটিল রাউটিং করতেও পারেন:
from flask import Flask
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'], defaults={'path': ''})
@app.route('/<path:path>', methods=['GET', 'POST'])
def catch_all(path):
return 'You want path: %s' % path
if __name__ == '__main__':
app.run()
এটি কোনও অনুরোধের সাথে মিলবে। আরও বিশদ এখানে দেখুন: ক্যাট-সমস্ত URL ।