اذهب إلى المحتوى
  • 0

كيفية إستعمال التعابير النمطية  regular expressions في مسارات فلاسك Flask؟

Mohssen A Mohssen

السؤال

أحاول أن أقوم بعمل مسار يحتوي على معامل واحد ولكن يجب أن يحتوي هذا المعامل على بعض الشروط، مثل أن يكون طوله من 2 إلى 5 أحرف فقط، ولا يجب أن يكون بأي أحرف غير الإنجليزية والأرقام، أي يجب أن ينطبق على التعبير التالي:

[a-zA-Z0-9]{2,5}

هل يمكن القيام بهذا الأمر في فلاسك Flask أم يجب أن أقوم بإستقبال المعامل داخل الدالة والتحقق منه يدويًا؟
 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

يمكن القيام بهذا الأمر من خلال إستخدام الصنف BaseConverter (المتوفر في werkzeug.routing) للقيام بإنشاء محول converter باسم regex على سبيل المثال، على النحو التالي:

from werkzeug.routing import BaseConverter

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

ويمكنك أن تستخدمه بالشكل التالي:

from flask import Flask, render_template
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("[a-zA-Z0-9]{2,5}"):uid>/', methods=['POST', 'GET'])
def index(uid):
    return uid

    
if __name__ == '__main__':
    app.run(debug=True)

ستلاحظ أن كل المسارات التالية تعمل لأنها تحقق الشروط:

http://127.0.0.1:5000/hi/
http://127.0.0.1:5000/12/
http://127.0.0.1:5000/123/
http://127.0.0.1:5000/hi123/
...

بينما المسارات التالية لن تعمل على الإطلاق:

http://127.0.0.1:5000/
http://127.0.0.1:5000/a/
http://127.0.0.1:5000/%D9/
http://127.0.0.1:5000/hello-world/
http://127.0.0.1:5000/helloworld/
...

يمكنك أن تقرأ أكثر حول التعابير النمطية في هذه المقالة:

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...