2014-03-27 135 views
0

我有一個Django項目myproj,與應用程序myapp。在myproj/myproj中,我有一個文件settings.py,其中包含行STATIC_URL = '/static/'。在myproj/myapp/static/myapp中,我有一個名爲myfile.txt的文件。在myproj/myapp,我有一個文件myscript.py,包含線路:Django:找不到文件使用靜態()

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

在這裏,我在瀏覽器中得到一個錯誤:No such file or directory: '/static/myapp/myfile.txt'

但是,如果我的代碼更改爲以下:

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

它工作正常。爲什麼第一個不工作?謝謝。

+1

它看起來像'靜態的()'返回一個鏈接到資源不是它的路徑。 –

+0

看來你需要在settings.py中正確定義你的STATIC_ROOT –

回答

0

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

myscript.py

from django.conf import settings 
fname = settings.STATIC_ROOT + 'myapp/myfile.txt' 
    with open(fname, 'r') as f: 
     # Do something 

編號: https://thezebra.wordpress.com/2011/10/13/usage-notes-on-static_root-static_url-media_root-media_url-in-django-v1-3/