问题描述
|
当将开发服务器与视图和模板html文件(似乎都正确格式化)一起使用时,Django的服务器不会像应有的那样使模板中的html成为源代码到网页。相反,它似乎只是呈现模板,就好像它是我想在页面上显示的东西一样。因此,似乎使用我的模板文件作为应打印的文本来创建它自己的html。例如,这是在开发服务器上运行时视图和模板以及来自网页的源代码。
视图:
def start(request,ampCode):
t = get_template(\'code_user.html\')
c = Context({\'user_code\': ampCode})
html = t.render(c)
return HttpResponse(html)
模板:
{% extends \"base_code_user.html\" %}
{% block title %} This is the title {% endblock %}
{% block body %}
<b> {{user_code}} </b>
{% endblock %}
另一个扩展的其他模板:
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"
\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">
<head>
<title> {% block title %} {% endblock %} </title>
</head>
<body>
{% block body %} {% endblock %}
</body>
</html>
产生的源代码:
<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">
<html>
<head>
<Meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">
<Meta http-equiv=\"Content-Style-Type\" content=\"text/css\">
<title></title>
<Meta name=\"Generator\" content=\"Cocoa HTML Writer\">
<Meta name=\"CocoaVersion\" content=\"1038.35\">
<style type=\"text/css\">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Courier}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Courier; min-height: 14.0px}
span.Apple-tab-span {white-space:pre}
</style>
</head>
<body>
<p class=\"p1\"><!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">
<html>
<head>
<Meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">
<Meta http-equiv=\"Content-Style-Type\" content=\"text/css\">
<title></title>
<Meta name=\"Generator\" content=\"Cocoa HTML Writer\">
<Meta name=\"CocoaVersion\" content=\"1038.35\">
<style type=\"text/css\">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Courier}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Courier; min-height: 14.0px}
span.Apple-tab-span {white-space:pre}
</style>
</head>
<body>
<p class=\"p1\"><!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"</p>
<p class=\"p1\"><span class=\"Apple-converted-space\"> </span>\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"></p>
<p class=\"p1\"><html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\"></p>
<p class=\"p1\"><span class=\"Apple-converted-space\"> </span><head></p>
<p class=\"p1\"><span class=\"Apple-tab-span\"> </span><title> This is the title </title></p>
<p class=\"p1\"><span class=\"Apple-converted-space\"> </span></head></p>
<p class=\"p2\"><br></p>
<p class=\"p1\"><span class=\"Apple-tab-span\"> </span><body></p>
<p class=\"p1\"><span class=\"Apple-tab-span\"> </span><span class=\"Apple-tab-span\"> </span></p>
<p class=\"p2\"><br></p>
<p class=\"p1\"><span class=\"Apple-tab-span\"> </span><b> AAAAAA </b></p>
<p class=\"p2\"><br></p>
<p class=\"p1\"></p>
<p class=\"p1\"><span class=\"Apple-tab-span\"> </span></body></p>
<p class=\"p2\"><br></p>
<p class=\"p1\"></html></p>
</body>
</html>
也许我只是不了解模板系统的功能,并且可能工作正常,但是我的印象是模板中的任何内容都将成为页面的最终源代码。任何可能导致此问题的帮助都将有所帮助。谢谢
解决方法
编辑:
当我在Django项目中尝试您的确切示例时,它对我有用(相同的视图名称,相同的模板名称)。输出(假设ampCode为3):
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"
\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">
<head>
<title> This is the title </title>
</head>
<body>
<b> 3 </b>
</body>
</html>
我的猜测是您的问题在其他地方,而不是在代码示例中找到。也许您的URL配置文件中存在指向完全不同的视图的问题?
先前的答案:
在您的视图中,将“ 5”添加到“ 6”中:
return HttpResponse(html,mimetype=\'text/html\')
如果不是,它将默认解释为text/plain
,因此无法正确呈现html。
如果要在渲染模板时缩短内容,可以只使用响应快捷方式。看一下Django的快捷功能。