我知道在Django项目中访问静态文件有很多问题,但是我找不到一个令人满意的答案来处理我正在处理的问题。所以,这是我的项目结构:
.
├── project
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ ├── wsgi.py
├── db.sqlite3
├── manage.py
└── app
├── admin.py
├── __init__.py
├── migrations
│ ├── __init__.py
├── models.py
├── static
│ └── app
│ └── file.txt
├── tests.py
├── urls.py
└── views.py
根据Django 1.7 documentation我已将静态文件 file.txt 存储在 app / static / app 文件夹中。现在,如何在视图中引用此文件?让我们说我需要为app / views.py中定义的每个调用读取此文件的内容。
像往常一样,我在项目/ settings.py
中默认设置 STATIC_URL =' / static /'由于
答案 0 :(得分:5)
您可以将static
模板标记导入视图并按原样使用:
from django.templatetags.static import static
url = static('app/file.jpg')
答案 1 :(得分:1)
您可以通过在设置中定义STATIC_ROOT来执行此操作。然后在运行项目之前,您可以运行
python manage.py collectstatic
然后可以使用以下方法访问静态文件: -
file = open(os.path.join(settings.STATIC_ROOT, 'app/a.txt'))
这基本上就是这样,它应该在生产环境中完成,因为静态文件是与django html视图分开托管的。
在project / urls.py
中动态加载app的名称url(r'^', include('app.urls', app_name="app")),
然后在视图中: -
from django.core.urlresolvers import resolve
def appname(request):
return resolve(request.path).app_name