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

عرض قيمة متغير بتنسيق HTML في قالب في جانغو Django

Amer Abdallah

السؤال

أستخدم واجهة "messages" لتمرير الرسائل إلى المستخدم مثل الكود التالي:

request.user.message_set.create(message=message)

أود تضمين html في المتغير {{message}} الخاص بي وعرضه دون تجاوز أكواد HTML في القالب، وبالتالي يتم عرض كود HTML بشكل صحيح في المتصفح. كيف أقوم بعمل هذا الأمر؟

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

Recommended Posts

  • 1

إذا كنت لا تريد تجاوز HTML، لعرضها بشكل كامل فيمكنك أن تستخدم عامل التصفية safe:

{{ myhtml |safe }}

كما يمكنك أن تستخدم autoscape لكي يتم إيقاف عملية auto-scaping المسئولة عن تخطي أكواد HTML، يقبل هذا العنصر معامل واحد بيقمة on أو off، على النحو التالي:

{% autoescape off %}
    {{ myhtml }}
{% endautoescape %}

كما يمكنك إعادة تشغيل عملية تخطي أكواد HTML في جزء معين من خلال المرشح escape، كالتالي:

{% autoescape off %}
    {{ title|escape }}
{% endautoescape %}

كما يمكنك ان تستخدم التابع format_html والذي يقوم بقبول كود HTML كمعامل أول ثم المتغيرات التي يتم إستخدامها في هذا الكود، كالتالي:

from django.utils.html import format_html
from django.utils.safestring import mark_safe

some_html = "<h1>this is title</h1>"
some_text = "this is a strong text"
some_other_text = "another text here"

format_html("{} <b>{}</b> {}",
    mark_safe(some_html),
    some_text,
    some_other_text,
)

أيضًا يوفر جانغو Django طريقة أخرى لعمل render لكود HTML لديك من خلال الصنف Context و Template، على النحو التالي:

from django.template import Context, Template
t = Template('This is your <span>{{ message }}</span>.')

c = Context({'message': 'first message'})
html = t.render(c)	# This is your <span>first message</span>.

 

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

  • 0

إذا كنت تريد أن تفعل شيئا أكثر تعقيدا مع النص الخاص بك ، يمكنك إنشاء الفلتر الخاص بك والقيام ببعض الأمور قبل إرجاع النص.في ملف Template تستطيع انشاء دالة لفعل ذلك, على فرض اسمها do_something

from django import template
from django.utils.safestring import mark_safe

register = template.Library()

@register.filter
def do_something(title, content):

    something = '<h1>%s</h1><p>%s</p>' % (title, content)
    return mark_safe(something)

ثم في ملف القالب الخاص بك تستطيع استدعاء الدالة التي قمت بانشائها والتي اسمها do_something وتمرير النص الذي تريده

<body>
...
    {{ title|do_something:content }}
...
</body>

 

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

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...