Django render_to_response显示原始文本

时间:2012-12-13 22:20:58

标签: django

我是Django的新手,我正在尝试创建一个简单的html骨架来验证一切正常。一切正常(服务器正在运行并加载文件)但是当我输入HTML代码时,它显示为原始文本而不是正确呈现它。

我的views.py如下

def home(request):
        return render_to_response('index.html')

我的'index.html'如下

<!DOCTYPE html >

    <html>
        <head>
        <meta charset="UTF-8">
            <title> awesome </title>
        </head>
        <body>
      
        </body>
    </html>

如何才能正确渲染? (仅显示“真棒”)

EDIT 就这个问题而言,错误来自于我将原始代码保存为html。当我选择这个选项时,它添加了代码以使html渲染它看起来像一个原始输入。

故事的道德:确保您在文本编辑器中进行编辑并手动更改扩展

3 个答案:

答案 0 :(得分:2)

1)删除&lt;中的空格标题&gt;标签

2)并在urls.py文件中添加波纹管代码,无需使用视图进行映射,也可以从url渲染html页面

 (r'^home/$', 'django.views.generic.simple.direct_to_template',
        {'template': 'index.html'}),

答案 1 :(得分:1)

您需要做的第一件事是创建一个“基础”模板,以便其他模板可以扩展。您通常会将其称为base.html,但您可以使用所需的名称。您还需要创建扩展模板可以使用的blocks

<强> base.html文件

<!DOCTYPE html >

<html>
    <head>
    <meta charset="UTF-8">
        < title > awesome < /title >
    </head>
    <body>
    {% block content %}{% endblock %}
    </body>
</html>

然后,您必须从base.html扩展index.html并使用我们创建的content块:

<强>的index.html

{% extends "base.html" %}

{% block content %}
{% endblock %}

此时,index.html将与base.html完全相同,因为您没有在content块中显示任何内容。使用以下数据更新您的视图:

<强> views.py

def home(request):
    data = {'name': 'YourName', 'age': 25}

    return render_to_response('index.html', data)

现在,再次更新您的index.html

<强>的index.html

{% extends "base.html"%}

{% block content %}
    <p>My name is {{ name }}</p>
    <p>I'm {{ age }} years old</p>
{% endblock %}

不要忘记阅读罚款tutorial

答案 2 :(得分:1)

一些问题..

1:标签内的空格是什么?

< title >无效。它必须是<title>Foo</title>这就是你看到“html”的原因。

2:即使标题标签写得正确,标题标签也不会呈现,因此您将获得一个空白页面。如果你想显示“真棒” - 你需要在body标签内写。

<body>awesome</body>