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

السؤال

نشر

أستخدم واجهة "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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...