无法在Django MVC中找到视图

时间:2013-09-07 12:18:11

标签: python html django django-templates django-views

我正在尝试开始一个简单的项目来显示一些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?

1 个答案:

答案 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}}