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

السؤال

نشر

لدي بعض أكواد HTML التي قمت بسحبها من بعض المواقع وحفظتها في قاعدة بيانات، الآن أريد أن  يتم إحضارها من قاعدة البيانات لأقوم بعرضها بإستخدام فلاسك Flask، وقمت بكتابة الكود التالي:

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def scraped_pages():
    html = "<h1>Hello, World!</h1>"	# يتم إحضار هذا النص من قاعدة البيانات
    return render_template("index.html", data=html)

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

وفي القالب index.html أقوم بعرض المتغير data بالشكل التالي:

<body>
  {% block body %}
    {{ data }}
  {% endblock %}
</body>

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

return render_template("index.html", data= Markup(html).unescape())

لكن نفس المشكلة لم تتغير،  ما هو الخطأ هنا؟

Recommended Posts

  • 1
نشر (معدل)

إستعمل مرشح القوالب filter لوضع علامة آمن على أكواد ال Html التي أضفتها حتى يقوم jinja بعرضها كعناصر وليس كنص.

<body>
	{% block body %}
		{{ data|safe }}
	{% endblock %}
<body>

كما يمكنك الإستغناء عن unescape:

return render_template("index.html", data= Markup(html))

هذا سيؤدي إلى عمل نفس الشيء و سيُحافظ على القالب الخاص بك نظيفًا.

كما يُمكنك أيضا إستخدام:

{٪ autoescape٪}

التي تعمل على تعطيل نظام autoescape في القوالب:

{% autoescape false %}
    <body>
  	{% block body %}
    		{{ data }}
  	{% endblock %}
	</body>
{% endautoescape %}

ملاحظة: يُرجى توخي الحذر الشديد بشأن المتغيرات التي تستخدمها في هذه الكتلة.

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

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...