Шаблон Django неправильно отображается на сервере разработки - PullRequest
0 голосов
/ 25 мая 2011

При использовании сервера разработки вместе с 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">&lt;!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"&gt;</p>
<p class="p1">&lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"&gt;</p>
<p class="p1"><span class="Apple-converted-space">    </span>&lt;head&gt;</p>
<p class="p1"><span class="Apple-tab-span"> </span>&lt;title&gt;  This is the title  &lt;/title&gt;</p>

<p class="p1"><span class="Apple-converted-space">    </span>&lt;/head&gt;</p>
<p class="p2"><br></p>
<p class="p1"><span class="Apple-tab-span"> </span>&lt;body&gt;</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>&lt;b&gt; AAAAAA &lt;/b&gt;</p>

<p class="p2"><br></p>
<p class="p1"></p>
<p class="p1"><span class="Apple-tab-span"> </span>&lt;/body&gt;</p>
<p class="p2"><br></p>
<p class="p1">&lt;/html&gt;</p>
</body>
</html>

Может быть, я просто не понимаю, что делает система шаблонов, и она может работать правильно, но у меня сложилось впечатление, что все, что было в шаблоне, станет результирующим исходным кодом для страницы. Любая помощь в том, что может быть причиной этого, будет полезна. Спасибо

1 Ответ

0 голосов
/ 25 мая 2011

Изменить:

Когда я пробую ваш точный пример в проекте 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-адресом, указывающим на совершенно другое представление?

Предыдущий ответ:

По вашему мнению, добавьте mimetype к вашему HttpResponse:

return HttpResponse(html, mimetype='text/html')

Если нет, он будет интерпретирован как text/plain по умолчанию и, следовательно, не будет корректно отображать HTML.

Если вы хотите сократить время рендеринга шаблонов, вы можете просто использовать ярлыки ответов. Взгляните на функции быстрого вызова Django .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...