我正在尝试开始一个简单的项目来显示一些HTML。但是,当我运行我的代码时,我似乎无法找到html文件。我正在关注Django网站上的教程
“在您刚刚创建的模板目录中,创建另一个名为polls的目录,并在其中创建一个名为index.html的文件。换句话说,您的模板应该位于polls / templates / polls / index.html。如上所述app_directories模板加载器的工作方式,您可以将Django中的此模板简单地称为polls / index.html。“
所以我将index.html放入
homepage/templates/homepage/index.html
我还没有在models.py
中添加任何内容proj urls.py:
from django.conf.urls import include, url, patterns
urlpatterns = patterns('',
url(r'homepage/',include('homepage.urls', namespace = "homepage")),
)
app urls.py
from django.conf.urls import patterns, url
from homepage import views
urlpatterns = patterns('',
url(r'^$', views.index, name = 'index'),
)
views.py:
from django.http import HttpResponse
from django.template import RequestContext, loader
def index(request):
template = loader.get_template('homepage/index.html')
return HttpResponse(template)
)
的 的 ** * *** 更新的 * ** * ** * ** * **
因此,通过一些修修补补,我似乎能够抓取HTML文件。但是,此HTML文件的显示行为不正确。例如,如果我有这个位:
<!DOCTYPE html>
<html>
<body>
<form>
First name: <input type="text" name="firstname"><br>
Last name: <input type="text" name="lastname">
</form>
</body>
</html>
输出将是一个空白页面。页面源将显示:
<Text Node: '<!DOCTYPE html>
<html>
<b'>
不确定为什么这样做。是否需要安装django-pipeline和twitter bootstrap?
答案 0 :(得分:1)
问题在于return HttpResponse(template)
。 HttpResponse
接受content
作为第一个参数。内容可以是具有字符串表示的任何内容(实现__str__
或__unicode__
,具体取决于将Content-Encoding
标头传递给响应并且它是charset)或可迭代。在后一种情况下,所有元素的产生都必须用字符串表示。
您遇到的问题是您正在将Template
对象传递给响应,即可迭代(实现__iter__
方法)。迭代模板会生成所有已编译的节点。节点本身实现了__repr__
,__str__
在缺少HttpResponse
时使用。 content
,如果from django.http import HttpResponse
from django.template import RequestContext, loader
def index(request):
template = loader.get_template('homepage/index.html')
for n in template:
print n
return HttpResponse(template)
是可迭代的,则返回迭代迭代的所有元素。
你可以模拟这个:
{{1}}