В чем может быть проблема (взгляды Джанго) ...? - PullRequest
0 голосов
/ 02 ноября 2009

Я пишу приложение с графическим интерфейсом, используя Django 1.1.1.

Это 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, который находится внутри страницы страниц внутри папки приложения с графическим интерфейсом.

urls.py моего проекта

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

urlpatterns = patterns('',

    (r'^/$', mainpage)   
)

Когда я запускаю сервер, я получаю ошибку 404 для корневого сайта. Как я могу загрузить файл index.html через представления?

Ответы [ 4 ]

3 голосов
/ 02 ноября 2009

Если вам требуется просто вывод html-страницы, это можно сделать, просто вставив в urls.py:

следующее

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

1 голос
/ 02 ноября 2009

Для корневой страницы не используйте r'^/$', просто r'^$', потому что это ^ означает «начало строки после домена и слеша» (после 127.0.0.1/, если вы запускаете приложение на localhost). Вот почему localhost:8080// работает для вас.

Редактировать: проверьте свои пути тоже. Есть ли у вас каталог 'pages' в том же каталоге, что и views.py?

В любом случае: кажется, что вы пытаетесь сделать что-то плохое и против архитектуры Django. Посмотрите здесь для учебника по написанию вашего первого приложения в Django.

0 голосов
/ 02 ноября 2009

Понял! ;)

Кажется, что функция 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/.

0 голосов
/ 02 ноября 2009

Ваш действительный код в представлении неверен. Вот моя исправленная версия:

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/, если хотите обслуживать статические страницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...