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

كيفية إستبدال النصوص في قوالب jinja2 في فلاسك Flask؟

Mohssen A Mohssen

السؤال

لدي بعض البيانات التي يتم إحضارها من قاعدة بيانات، وأريد أن أعرضهم في قالب jinja2 ، لكن أولًا أريد الفصل بين العناصر بأسطر (العنصر br) وليس فواصل خطية. لذلك حاولت أن أستخدم الدالة replace بالشكل التالي:

{{ 'username|name|email' | replace("|", ":<br/>") }}

لكن المشكلة هي أنه يتم عرض النص بدون عرض عناصر HTML نفسها، ويظهر النص التالي كما هو في المتصفح:

username:<br/>name:<br/>email:<br/>

كيف أجعل المتصفح يقوم بإستخدام عنصر br لكتون النتيجة كالتالي؟

username:
name:
email:

 

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

Recommended Posts

  • 1

يُمكنك تعطيل خاصية  الautoescape للحصول على النتيجة التي ترغب بها:

{% autoescape false %}
  {{ 'username|name|email' | replace("|", ":<br/>") }}
{% endautoescape %}

لكن هذه الطريقة لا يُنصح بها لأنك تقوم بعطيل الحماية ضد حَقْن ال HTML أو ما يُعرف بالإنجليزية HTML Injection.

في طريقة أخرى وهي إنشاء مُرشح خاص يقوم بهذا العمل:

# myapp/util/filters.py

from .. import app
from markupsafe import Markup

@app.template_filter()
def custom_split(text):
    """ الفصل بين العناصر بأسطر"""
    return Markup("<br>".join(text.split("|")))

القالب يُصبحْ:

{{ 'username|name|email'|custom_split }}

 

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

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...