Django 如何将文件路径转换为url

Django 如何将文件路径转换为url,django,Django,我有一个文本文件,我想提供一个下载链接,由Django中的类方法生成。文件路径是绝对路径,例如 /var/www/django/project/app/somefile 但显然,我需要将其转换为基于webroot的文件路径,以便Web服务器进行翻译。我认为Django中有一些函数可以做到这一点,而不是手动截断部分绝对文件路径,但我似乎找不到它。有什么建议吗 我的一个想法是将其移动到静态目录,但我在以前的项目中从未真正使用过静态文件,因此我不太熟悉它的工作原理,或者它是否是最好的方法 编辑:我应

我有一个文本文件,我想提供一个下载链接,由Django中的类方法生成。文件路径是绝对路径,例如

/var/www/django/project/app/somefile
但显然,我需要将其转换为基于webroot的文件路径,以便Web服务器进行翻译。我认为Django中有一些函数可以做到这一点,而不是手动截断部分绝对文件路径,但我似乎找不到它。有什么建议吗

我的一个想法是将其移动到静态目录,但我在以前的项目中从未真正使用过静态文件,因此我不太熟悉它的工作原理,或者它是否是最好的方法

编辑:我应该指出,我知道这可以通过各种方式实现,但我正在寻找最具pythonist或Django-istic风格的最佳实践。

Web服务器可以直接下载文件的唯一位置是静态或媒体目录。Web服务器不能访问您的代码文件;这将是一个明显的安全风险


如果您正在生成一个要下载的文件,请将其写入媒体目录。

我无法想象您希望提供下载项目代码文件的路径的情况,或者您认为代码位置和URL之间存在任何关系的原因。你能进一步解释一下吗?这不是代码文件。它是根据django数据库中的数据生成的文件。应用程序从各种来源收集大量数据,存储在数据库中,然后每天生成一个文件,有人将下载并可能打印出来。(这是一个需要检索的媒体列表,所以打印到网页上是没有用的。)我还应该注意,生成这个文件需要很长时间,所以我有一个过程,每天早上生成一个文本文件,而不是有人按需请求并等待20-30分钟。我使用文本文件是因为其他进程可以在django之外使用该文件。媒体目录和静态目录之间是否有功能上的区别,或者它们只是存储非代码文件的两个选项?静态目录中的文件是静态的;它们与应用程序一起部署(或在部署时生成),并用于JS和CSS资产等。媒体文件由用户通过应用程序生成或上传。