Python Django:无法使用static()找到文件

Python Django:无法使用static()找到文件,python,django,Python,Django,我有一个Django项目myproj,其中有一个appmyapp。在myproj/myproj中,我有一个文件settings.py,其中包含一行STATIC\u URL='/STATIC/'。在myproj/myapp/static/myapp中,我有一个名为myfile.txt的文件。在myproj/myapp中,我有一个文件myscript.py,其中包含以下行: from django.templatetags.static import static fname = static('m

我有一个Django项目
myproj
,其中有一个app
myapp
。在
myproj/myproj
中,我有一个文件
settings.py
,其中包含一行
STATIC\u URL='/STATIC/'
。在
myproj/myapp/static/myapp
中,我有一个名为
myfile.txt
的文件。在
myproj/myapp
中,我有一个文件
myscript.py
,其中包含以下行:

from django.templatetags.static import static
fname = static('myapp/myfile.txt')
    with open(fname, 'r') as f:
        # Do something
在这里,我在浏览器中得到一个错误:
没有这样的文件或目录:'/static/myapp/myfile.txt'

但是,如果我将代码更改为以下内容:

fname = 'myapp/static/myapp/myfile.txt'
    with open(fname, 'r') as f:
        # Do something

它很好用。为什么第一个不起作用?谢谢。

open
函数中,
/static/myapp/myfile.txt
表示您环境中的绝对路径
myapp/static/myapp/myfile.txt是一个相对路径,因此它可以工作

也许你想要这个

settings.py
中:

# Replace 'your_path` with your actual path
`STATIC_ROOT` = '/your_path/myproj/myapp/static/'
from django.conf import settings
fname = settings.STATIC_ROOT + 'myapp/myfile.txt'
    with open(fname, 'r') as f:
        # Do something
myscript.py
中:

# Replace 'your_path` with your actual path
`STATIC_ROOT` = '/your_path/myproj/myapp/static/'
from django.conf import settings
fname = settings.STATIC_ROOT + 'myapp/myfile.txt'
    with open(fname, 'r') as f:
        # Do something
参考:

它看起来像是
static()
返回指向资源的url,而不是指向资源的路径。似乎您需要在settings.py中正确定义静态根目录