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

كيفية تمرير أكواد HTML إلى قالب Jinja2 في فلاسك Flask؟

Mohssen A Mohssen

السؤال

أحاول أن أقوم بعمل لوحة تحكم بإستخدام Flask و SQLAlchemy، وأريد أن أقوم بتمرير بعض المتغيرات إلى القالب بإستخدام render_template، لكن المشكلة هي أنه يتم تحويل كل أكواد HTML التي يتم تمريرها، وبالتالي كل الرموز < " ' > يتم تحويلها إلى HTML entities مثل ;it& 

كيف أقوم بتمرير كود HTML ليتم عرضه في القالب بدون أن يتم تحويله 

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

Recommended Posts

  • 1

هذه الخاصية تسمى autoescaping  وهي موجودة بشكل إفتراضي لحماية الموقع من ثغرات مثل XSS ، ولكن تدعم قوالب jinja إيقاف هذه الخاصية في جزء معين من خلال إضافة المرشح safe| إلى اسم المعامل، على النحو التالي:
 

{{ htmlcode|safe }}

وإن كان لديك العديد من المتغيرات التي تريد عرضها فيمكنك أن تقوم بإيقاف الخاصية autoescaping في جزء من القالب على النحو التالي:
 

{% autoescape false %}

{{ something }}
<p>{{ something_else }}</p>
<b>{{ something_important }}</b>

{% endautoescape %}

الطريقة الأخرى هي إستخدام MarkupSafe، حيث توفر الدالة Markup التي تقوم بنفس مهمة المرشح safe| السابق، يمكنك تحميل المكتبة من خلال الأمر التالي:

pip install -U MarkupSafe

ثم يمكنك أن تستعملها على النحو التالي

from markupsafe import Markup

htmlcode = Markup('<p>HTML Content</p>')

الآن يمكنك تمرير المتغير htmlcode إلى أي قالب وسوف يتم عرض محتواه بدون مشكلة وبدون إستعمال المرشح safe|

ملاحظة: لا تقم بإستخدام هذه الطرق إلا إذا كنت متأكد من محتوى htmlcode السابق، وذلك لكي لا يتعرض الموقع لهجمات cross-site scripting (XSS)

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

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...