获得"静态"的路径django中的文件夹自动生成

时间:2014-09-16 13:10:14

标签: python django

我正在开发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中的路径。 怎么不这样做?如何获得"静态"的路径我运行项目时自动运行文件夹。请帮忙。我错过了什么?

1 个答案:

答案 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/