Skip to main content
 首页 » 编程设计

python之自动获取django中 "static"文件夹路径

2025年05月04日25findumars

我正在开发 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/