我正在开发 Django (1.6) 应用程序。在我的应用程序中,我必须使用静态图像显示在 HTML 页面上(例如搜索框的放大镜、 Logo 等)。经过一些研究,我开始知道我们必须创建一个文件夹(比如“静态”)来保存静态图像,然后我在我的 settings.py 中提到了路径,如下所示:
`STATIC_URL = '/static/'
STATICFILES_DIRS = (
"C:/Users/Welcome/Desktop/business/static/polls",
"C:/Users/Welcome/Desktop/business/static",
)`
我还在 urls.py 中添加了下面显示的代码,之后我可以在我的 HTML 页面上获取图像。
urlpatterns = patterns(''...............) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
我现在的问题是每次更改目录(当前工作目录或者如果我将项目转移到另一台电脑)我都必须更新 settings.py 中的路径。 如何不这样做?运行项目时如何自动获取“静态”文件夹的路径。请帮忙。我缺少什么?
请您参考如下方法:
通常,django 的静态文件查找器会期望您的应用程序本身有一个 static 子目录,您可以将所有内容存储在那里。
+ myproj
- manage.py
+ app
- __init__.py
- settings.py
- urls.py
+ static <-- notice the static directory.
+ templates
这对于 Django 服务器为这些静态文件提供服务的开发当然是好的。在生产中,您需要使用 collectstatic 管理命令将所有内容收集到您的 STATIC_ROOT 设置中声明的位置。
这样,每次将项目复制到新位置或新计算机时,您都无需更改位置。
当然,一旦您这样做了,您就可以从 settings.py 中删除 STATICFILES_DIRS 定义。此设置用于告诉 Django 在某个应用程序之外还有其他静态 Assets 。如果你仍然想使用它,那么你可以定义那些相对于项目本身的目录,即:
STATICFILES_DIRS = (
os.path.join(BASE_DIR, "static")
)
您的 urls.py 应该像这样使用 staticfiles_urlpatterns:
if settings.DEBUG:
urlpatterns += staticfiles_urlpatterns()
有关更多信息,请参阅有关静态文件的 Django 文档: https://docs.djangoproject.com/en/1.7/howto/static-files/
