ฉันใช้อินเทอร์เฟซ 'ข้อความ' เพื่อส่งต่อข้อความไปยังผู้ใช้เช่นนี้:
request.user.message_set.create(message=message)
ฉันต้องการรวม html ใน{{ message }}
ตัวแปรของฉันและแสดงโดยไม่ต้องมาร์กอัปในเทมเพลต
ฉันใช้อินเทอร์เฟซ 'ข้อความ' เพื่อส่งต่อข้อความไปยังผู้ใช้เช่นนี้:
request.user.message_set.create(message=message)
ฉันต้องการรวม html ใน{{ message }}
ตัวแปรของฉันและแสดงโดยไม่ต้องมาร์กอัปในเทมเพลต
คำตอบ:
หากคุณต้องการทำสิ่งที่ซับซ้อนมากขึ้นกับข้อความของคุณคุณสามารถสร้างตัวกรองของคุณเองและทำเวทมนต์ก่อนที่จะส่งคืน html ด้วยไฟล์ templatag ที่มีลักษณะดังนี้:
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)
จากนั้นคุณสามารถเพิ่มสิ่งนี้ในไฟล์แม่แบบของคุณ
<body>
...
{{ title|do_something:content }}
...
</body>
และนี่จะให้ผลลัพธ์ที่ดีแก่คุณ
คุณสามารถแสดงเทมเพลตในรหัสของคุณดังนี้:
from django.template import Context, Template
t = Template('This is your <span>{{ message }}</span>.')
c = Context({'message': 'Your message'})
html = t.render(c)
ดูเอกสาร Djangoสำหรับข้อมูลเพิ่มเติม
ใช้autoescape
เพื่อปิดการหลบหลีก HTML:
{% autoescape off %}{{ message }}{% endautoescape %}
วิธีที่ง่ายที่สุดคือใช้safe
ตัวกรอง:
{{ message|safe }}
ตรวจสอบเอกสาร Django สำหรับตัวกรองที่ปลอดภัยสำหรับข้อมูลเพิ่มเติม
ไม่จำเป็นต้องใช้ตัวกรองหรือแท็กในแม่แบบ เพียงใช้ format_html () เพื่อแปลตัวแปรเป็น html และ Django จะปิดการหลบหลีกโดยอัตโนมัติสำหรับคุณตัวแปร
format_html("<h1>Hello</h1>")
ลองดูที่นี่https://docs.djangoproject.com/en/3.0/ref/utils/#django.utils.html.format_html
€
) เงินดอลลาร์ที่ผ่านมาจากมุมมองนี้เป็นวิธีที่จะไป