我正在开发Django(1.6)应用。在我的应用程序中,我必须使用静态图像显示在HTML页面上(如搜索框,徽标等放大镜)。经过一些研究后我才知道我们必须创建一个文件夹(例如"静态"),它保存静态图像,然后我在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)
现在我的问题是每次我更改目录(当前工作目录或者我将项目转移到另一台PC)时,我必须更新settings.py中的路径。 怎么不这样做?如何获得"静态"的路径我运行项目时自动运行文件夹。请帮忙。我错过了什么?
答案 0 :(得分:1)
通常,django的静态文件查找器会期望您的应用程序本身具有static
子目录,并且您可以将所有内容存储在那里。
+ myproj
- manage.py
+ app
- __init__.py
- settings.py
- urls.py
+ static <-- notice the static directory.
+ templates
对于Django服务器是为这些静态文件提供服务的开发,这当然是好的。在制作中,您需要使用STATIC_ROOT
管理命令将所有内容收集到collectstatic
设置中声明的位置。
这样,每次将项目复制到新位置或新计算机时,您都不需要更改位置。
当然,一旦您这样做,您可以从STATICFILES_DIRS
中删除settings.py
定义。此设置用于告知Django其他静态资产位于某个应用程序之外。如果你想要使用它,那么你可以定义相对于项目本身的那些目录,即:
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/