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

السؤال

نشر

أحاول أن أبني ملف sitemap.xml و فهرس index للموقع يدويًا عبر فلاسك Flask لذلك أحتاج إلى الحصول على كل المسارات المسجلة في التطبيق تلقائيًا، مع العلم أن التطبيق يحتوي على العديد من المسارات.

from flask import Flask, url_for, Response, request

app = Flask(__name__)

@app.route("/")
def index():
	pass

@app.route("/users")
def users():
	pass

# ....

هل توجد طريقة أو دالة للحصول على المسارات الموجودة في الكود بشكل تلقائي؟

Recommended Posts

  • 1
نشر

فلاسك Flask يقوم بتخزين كل المسارات في  app.url_map والذي هو عبارة عن مثيل من الكائن werkzeug.routing.Map ، ويمكنك المرور على كل مسار من خلال إستخدام التابع iter_rules، على النحو التالي:

from flask import Flask, request, url_for, Response

app = Flask(__name__)


@app.route('/users/<user_id>')
def index(user_id):
    pass


@app.route('/foo')
def foo():
    routes = []
    for rule in app.url_map.iter_rules():
        routes.append(rule.endpoint)
    print(routes)   # ['foo', 'static', 'index']
    return "printed routes", 200


app.debug = True
app.run(debug=True)

بهذا الشكل يمكنك الحصول على كل المسارات. كما يمكنك أن تقوم بالحصول على المسارات من خلال سطر الأوامر عبر إستدعاء ملف المشروع الرئيسي وطباعة قيمة app.url_map:

python
>>> from app import app
>>> app.url_map
['foo', 'static', 'index']

أيضًا تستطيع تنفيذ الأمر flask routes للحصول على قائمة من المسارات وأنواعها:

> flask routes
Endpoint  Methods  Rule
--------  -------  -----------------------
foo       GET      /foo
index     GET      /users/<user_id>
static    GET      /static/<path:filename>

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...