如何在django中打开文件

How to open file in django

我正在尝试从视图中打开与应用程序位于同一目录中的文件。

-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'

想了想,想放到静态目录下,还是报同样的错误

编辑: 我不知道这是否是原因...但是当按回车键换行时,它会在一个新的缩进上。

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。提到,你的路径是相对的。每当代码被运行时,它就是"working directory"中的运行。比如我在app目录下运行python views.py,那么当前工作目录(简称cwd)就是app。然后,当给出 relative path 时,比如 about.txt (实际上意味着 ./about.txt,其中 . 代表 cwd),它会在 cwd 中查找 about.txt .