渲染将html返回到文本中

时间:2016-11-28 14:01:41

标签: python django

这是urls.py

from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^$', views.login_page, name='login_page'),
]

我的views.py就像这样

def login_page(request):
    return render(request, 'mileage/login_page.html', {})

这是我的HTML代码

<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, width=device-width" >
    <meta charset="UTF-8">
    <title>Test</title>
    <link rel="stylesheet" href="{% static 'css/style.css' %}">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js">
    </script>
</head>
<body bgcolor="#4599e8">
<div class="title"><span><h1>Test</h1></span></div>
<div class="home_password">
    <div class="password"><input type="password" name="password" placeholder="Password"></div>
    <div class="button"><button>OK</button></div>
</div>
</body>
</html>

启动服务器,但我的localhost:8080 /只显示html文本而非页面。

使用Chrome Developer Console,我检查了元素。

<html>
<head></head>
<body>
<pre style="word-wrap: break-word; white-space: pre-wrap;">
"
   my html code here.
"
</pre>
</body>
</html>

我不知道如何解决它。

1 个答案:

答案 0 :(得分:0)

谁将所有html代码插入预标记内是您的浏览器,因为它可能会收到带有响应的Content-type: text/plain标题,并且它认为您想要查看html代码而不是呈现的网页。

尝试使用以下方法进行测试:

render(request, 'mileage/login_page.html', {}, content_type='text/html')

如果有效,请将DEFAULT_CONTENT_TYPE常量设置为&#39; text / html&#39;在你的设置中。

  

DEFAULT_CONTENT_TYPE

     

默认值:&#39; text / html&#39;

     

用于所有HttpResponse对象的默认内容类型(如果是MIME)   类型不是手动指定的。与DEFAULT_CHARSET一起使用来构造   Content-Type标题。

可能一个环境变量让你搞砸了它,它有一个默认的文本/普通&#39;很奇怪。内容类型集。