2016-10-16 4 views
1

Я создаю представление в Django, который возвращает статический HTML-страницу, и мой код для этой точки зрения выглядит следующим образом:Джанго FileNotFoundError в представлении при возврате HTML с использованием кодеков

from django.shortcuts import render 
from django.http import HttpResponse 
from django.shortcuts import render_to_response 
import codecs 

# Basic HTTP response that returns my html index 
# To call this view, map it to a URLconf 

def index(request): 

    # When a request is called, return my index.html 

    html = codecs.open("index.html", "r") 
    return HttpResponse(html.read()) 

Когда я запустим Джанго девиация сервер и перейдите в мое приложение, вместо рендеринга index.html, которого я ожидаю, я столкнулся с FileNotFoundError at /myapp/, а также [Errno 2] No such file or directory: 'index.html'. Я знаю, что index.html - это настоящий файл в том же каталоге, что и мой views.py, и я также попробовал отладку, открыв debug.txt в том же каталоге и возвращая это, но с тем же результатом. Когда я открываю оболочку python в том же каталоге и пытаюсь открыть тот же файл, он работает без сбоев. Любое понимание было бы оценено, так как я нахожусь в тупике.

+0

Вы должны дать полный путь к файлу. –

+0

Использование os.path.abspath ("index.html"), предполагая, что я уже импортировал os, вы имеете в виду? Потому что я пытался, и я получаю ту же ошибку. –

ответ

0

Если вы хотите открыть файл из той же директории, как ваш view.py файл, используйте следующую команду:

html = open(os.path.dirname(os.path.realpath(__file__)) + 'index.html', "r")