Python 在Django views.py中引用文件

Python 在Django views.py中引用文件,python,django,file,Python,Django,File,我正在构建一个Django web界面——我知道!对于一些小型python函数。其中之一是转换存储在Django root中的txt文件。它的目的是 我在几个地方有以下设置: with open('file.csv','r') as source: ... 但是,如果不在我的计算机上设置整个目录,例如/home/…,它将无法找到该文件。我试着把它放在静态目录中,因为我希望人们能够在稍后的阶段下载该文件,但同样的问题 如何处理Django中的文件?解决上述问题的最佳做法是什么?允许他人稍后下载?

我正在构建一个Django web界面——我知道!对于一些小型python函数。其中之一是转换存储在Django root中的txt文件。它的目的是

我在几个地方有以下设置:

with open('file.csv','r') as source:
...
但是,如果不在我的计算机上设置整个目录,例如/home/…,它将无法找到该文件。我试着把它放在静态目录中,因为我希望人们能够在稍后的阶段下载该文件,但同样的问题


如何处理Django中的文件?解决上述问题的最佳做法是什么?允许他人稍后下载?

如果您只需要路径:

import os
from django.conf import settings

file_path = os.path.join(settings.STATIC_ROOT, 'file.txt')

with open(file_path, 'r') as source:
    # do stuff
请注意,您需要将文件放在如下目录中:my_app/static/my_app/file.txt
有关更多信息,请参考Django。

如果您只需要路径:

import os
from django.conf import settings

file_path = os.path.join(settings.STATIC_ROOT, 'file.txt')

with open(file_path, 'r') as source:
    # do stuff
请注意,您需要将文件放在如下目录中:my_app/static/my_app/file.txt
有关更多信息,请参阅Django。

执行此操作后,我是否可以打开并使用它?是否需要在每次安装应用程序时定义静态根目录?只有在将静态根目录定义到应用程序的静态目录时,我才能这样做。因此,这对多个应用程序不起作用吗?从文档中可以看出:现在我们可以将静态文件直接放在my_app/static/中,而不是创建另一个my_app子目录,但这实际上是个坏主意。Django将使用它找到的第一个名称匹配的静态文件,如果在不同的应用程序中有同名的静态文件,Django将无法区分它们。我们需要能够将Django指向正确的一个,确保这一点的最简单方法是对它们命名。也就是说,将这些静态文件放在另一个以应用程序本身命名的目录中。我完全理解这一点。然而,我指的更多的是我无法定义多个静态根的事实?或者我只是引用根目录?你只是引用根目录。这样做,我就可以打开并使用它吗?每次安装应用程序时是否需要定义静态根目录?只有在将静态根目录定义到应用程序的静态目录时,我才能这样做。因此,这对多个应用程序不起作用吗?从文档中可以看出:现在我们可以将静态文件直接放在my_app/static/中,而不是创建另一个my_app子目录,但这实际上是个坏主意。Django将使用它找到的第一个名称匹配的静态文件,如果在不同的应用程序中有同名的静态文件,Django将无法区分它们。我们需要能够将Django指向正确的一个,确保这一点的最简单方法是对它们命名。也就是说,将这些静态文件放在另一个以应用程序本身命名的目录中。我完全理解这一点。然而,我指的更多的是我无法定义多个静态根的事实?或者我只是引用根目录?您只是引用根目录。如果希望用户稍后下载文件,可以将其路径存储在模型中。如果希望用户稍后下载文件,可以将其路径存储在模型中。