我正在使用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文件?
答案 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/本身上运行。