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

السؤال

نشر

في ملف قالب Template، أحاول أن أقوم بإضافة صنف class إلى أحد عناصر HTML إذا كان الرابط هو نفس الصفحة الحالية، بحيث يكون الكود بالشكل التالي:

<li {% if current_page == "register" %} class="active" {% endif %}>                   
    <a href="/register">Register</a>                                                
</li>                                                                 
<li {% if current_page == "login" %} class="active" {% endif %}>                  
    <a href="/login">Login</a>                                          
</li> 

كيف يمكنني الحصول على قيمة current_page في الكود السابق للتحقق من الصفحة الحالية؟

Recommended Posts

  • 1
نشر (معدل)

في Flask يمكنك استخدام ```request.path``` ,والتي ستعطيك العنوان الحقيقي للصفحة الحالية او كما هو في مثالك

/register
/login

لا تنسي كتابتها بنفس الصيغة التالية خاصة وجود / قبل المسار الذي تستعلم عن وجوده.

<li {%- if request.path == "/register" %} class="active"{% endif %}>
    <a href="/register">Register</a>
</li>

<li {%- if request.path=="/login" %} class="active"{% endif %}>
    <a href="/login">Login</a>
</li>

ويمكنك ايضا استخدام  ```request.url_rule.endpoint``` والتي ستعطيك أسم الفانكشن المسؤلة عن الصفحة الحالية علي سبيل المثال , 

@app.route('/home')
def my_home():
    return render_template('main.html')

تصبح قيمة ```request.url_rule.endpoint``` اذا كنا في المسار /home هي my_home

ويمكنك تكرار نفس الجمل الشرطية ولكن بطريقة اخري مثلا إذا كان لدينا الاسماء التالية لدالتي login و register,

@app.route('/register')
def register_func():
    return render_template('register.html')


@app.route('/login')
def my_login():
    return render_template('login.html')

تصبح الجمل الشرطية كما يلي

<li {%- if request.url_rule.endpoint == "register_func" %} class="active"{% endif %}>
    <a href="/register">Register</a>
</li>
<li {%- if request.url_rule.endpoint =="my_login" %} class="active"{% endif %}>
    <a href="/login">Login</a>
</li>

.

 

 

 
تم التعديل في بواسطة Mohammed_Emad

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...