可能是什么问题(Django观点)......?

时间:2009-11-02 19:14:08

标签: python django

我正在使用Django 1.1.1编写GUI应用程序。

这是views.py:

from django.http import HttpResponse

def mainpage(request):
    f=open('pages/index.html','r').readlines()
    out=''''''
    for line in file:
        out+=line

    print out
    return HttpResponse(out)

我正在尝试加载index.html的内容,该内容位于GUI应用程序文件夹内的文件夹页面内。

我的项目的urls.py是

from django.conf.urls.defaults import *
from gui.views import *

urlpatterns = patterns('',

    (r'^/$', mainpage)   
)

当我运行服务器时,我的根站点出现了404错误。 如何通过视图加载index.html文件?

4 个答案:

答案 0 :(得分:3)

如果您只需要简单输出html页面,只需在urls.py中添加以下内容即可实现:

(r'^$', 'direct_to_template', {'template': 'index.html'})

答案 1 :(得分:1)

对于根页面,请不要使用r'^/$',而只使用r'^$',因为此^表示“在域和SLASH之后开始字符串”(在127.0.0.1/之后)你在localhost上运行应用程序)。这就是localhost:8080//适合你的原因。

编辑:检查你的路径。你在views.py所在的目录中有'pages'目录吗?

无论如何:似乎你正在尝试做一些糟糕的事情并且反对Django架构。查看here以获取有关在Django中编写第一个应用程序的教程。

答案 2 :(得分:0)

视图中的实际代码不正确。这是我的修正版本:

from django.http import HttpResponse

def mainpage(request):
    lines=open('loader/pages/index.html','r').readlines()
    out=''''''
    for line in lines:
        out+=line

    print out
    return HttpResponse(out)

请注意,在您的代码中,从文件中读取的行是:

f=open('pages/index.html','r').readlines()

打开文件并将行读入f,然后尝试迭代行。另一个变化就是让我的路径直接到达实际的索引文件。

如果您想要提供静态页面,可能需要阅读此http://docs.djangoproject.com/en/dev/howto/static-files/

答案 3 :(得分:0)

知道了! ;)

似乎mainpage函数实际上是在urls.py上运行的(因为它是从views.py中导入的),所以我必须提供的路径是gui / pages / index.html。我仍然有一个问题,'类型对象不可迭代',但以下工作:

def mainpage(request):
    f=open('gui/pages/index.html','r').readlines()
    return HttpResponse(f)

url模式是r'^ $'因此它可以在http://localhost:8080/本身上运行。