首页 > 解决方案 > 在 Django 中将 Html 作为 text/html 发送

问题描述

我有一个entry.html看起来像这样的文件:

{% extends 'encyclopedia/layout.html' $}

{% block title %}
    {{ title_name }}
{% endblock %}

{% block body %}
    {{ content }}
{% endblock %}

我必须阅读一些降价文件(.md),将其转换为 HTML 并将其显示在网页上。有一个util.py文件使用该util.get_entry(title)函数返回markdown文件的内容。

这是我的views.py文件:

from django.shortcuts import render
from django.http import HttpResponse
from . import util
from markdown2 import markdown

...
def entry_page(request, title):
    md_text = util.get_entry(title)
    if md_text is not None:
        html = markdown(md_text)
        return render(request, 'encyclopedia/entry.html', {
            'title_name': title,
            'content': html
        })
    else:
        return HttpResponse('<h1>404 Page Not Found!</h1>')

这里的问题是输出是纯文本的,如下所示:

错误

我想将文本作为 html 而不是纯文本发送。我如何实现这一目标?

标签: pythondjangoweb

解决方案


您可以使用safe过滤器禁用模板变量的 HTML 转义

{% extends 'encyclopedia/layout.html' $}

{% block title %}
    {{ title_name }}
{% endblock %}

{% block body %}
    {{ content|safe }}
{% endblock %}

推荐阅读