Как открыть файл в Django - PullRequest
0 голосов
/ 06 июля 2019

Я пытаюсь открыть файл, который находится в том же каталоге, что и приложение, из представлений.

-app
--views.py
--about.txt
--...

Мой код для открытия файла: *

def home(request):
    with open('about.txt','r') as f:
        about = f
    about = about.split('\n')
    about = '<br/>'.join(about)
    return render(request, 'app/home.html', {'about':about})

Но я продолжаю получать сообщение об ошибке `

FileNotFoundError at /
[Errno 2] No such file or directory: 'about.txt'

. Подумав об этом, я подумал о том, чтобы поместить его в статический каталог, но он все равно выдаст ту же ошибку.

  • IЯ все еще начинающий в Django.
  • Django 2.2.3
  • Python 3.7.3

Редактировать: я не знаю, является ли это причиной... но при нажатии Enter для новой строки, это делает его с новым отступом. example

1 Ответ

2 голосов
/ 06 июля 2019

TL; DR

Вы должны предвосхитить свой путь чем-то вроде app, чтобы создать app/about.txt. У меня недостаточно информации, чтобы сказать, что именно, но вот как это узнать:

При запуске приложения рабочий каталог, вероятно, отсутствует в приложении. Вы можете выяснить, по какому пути он работает, используя os.getcwd(). Например:

import os

# ...

def home(request):
    print(os.getcwd())
    with open('about.txt','r') as f:
        about = f
    about = about.split('\n')
    about = '<br/>'.join(about)
    return render(request, 'app/home.html', {'about':about})

Как @KlausD. упомянуто, ваш путь относительно. Всякий раз, когда выполняется код, он запускается в «рабочем каталоге». Например, если я запустил python views.py в каталоге app, текущий рабочий каталог (для краткости cwd) будет app. Затем, когда задан относительный путь , например about.txt (что на самом деле означает ./about.txt, где . представляет CWD), он ищет в CWD about.txt.

...