2016-11-28 93 views
0

这是urls.py渲染返回HTML转换成文本

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开发者控制台,我检查了元素。

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

我不知道如何解决它。

+0

你重新启动了服务器吗? – Sayse

+0

@Sayse肯定.... – LeeJaeng

回答

0

谁将您所有的html代码插入到pre标签内部是您的浏览器,因为它可能会收到一个Content-type: text/plain头部响应,它认为您希望看到html代码而不是呈现的网页。

尝试用一种测试:

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

如果它的工作原理,设置DEFAULT_CONTENT_TYPE不断在你的设置 'text/html的'。

DEFAULT_CONTENT_TYPE

默认值:文本/ html“

默认内容类型用于所有的HttpResponse对象,如果没有手动地指定一个MIME 类型。与DEFAULT_CHARSET一起使用来构造内容类型标头 。

可能是一个环境变量搞砸了你,这很奇怪,它有一个默认的“text/plain”内容类型集。