首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为测试/开发设置django静态目录

为测试/开发设置django静态目录
EN

Stack Overflow用户
提问于 2014-08-28 07:27:39
回答 2查看 2.9K关注 0票数 2

在生产中,apache服务器可以很好地处理服务static文件。为了在本地机器上进行测试,我使用了manage.py runserver

我的django应用程序似乎以某种方式向这个调试服务器中注入了一些默认的搜索路径。浏览器url显示/static/whatever下的所有内容,但这些文件来自各地。这对于测试来说很好,但是当转移到生产中时,我需要它们在一条路径上。幸运的是,manage.py collectstatic提供了一种方便的方法,可以将所有内容复制到STATIC_ROOTsettings.py中给出的一个目录中。我已经将我的设置为os.path.join(BASE_DIR, 'static/')BASE_DIRmanage.py的位置。

现在我想在static中添加我自己的东西,但是DEBUG=True下的应用程序提供的这些隐藏搜索目录仍然承载着所有的东西。我在urls.py中尝试了以下几种方法

代码语言:javascript
复制
from django.conf import settings
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
if settings.DEBUG:
    urlpatterns += staticfiles_urlpatterns()

代码语言:javascript
复制
import re
from django.conf import settings
if settings.DEBUG:
    static_url = re.escape(settings.STATIC_URL.lstrip('/'))
    urlpatterns += patterns('',
        (r'^%s(?P<path>.*)$' % static_url, 'django.views.static.serve', {'document_root': settings.STATIC_ROOT}),
    )

两者都不起作用。

我尝试在STATICFILES_DIRS中提供我的静态目录,但是得到了错误ImproperlyConfigured: The STATICFILES_DIRS setting should not contain the STATIC_ROOT setting。因此,我尝试删除我的STATIC_ROOT,所以路径只在STATICFILES_DIRS中给出。最后,我可以访问正在开发中的文件(仍然使用上面的staticfiles_urlpatterns )。

,但是,我很确定删除STATIC_ROOT并不是正确的方法。首先,在安装其他应用程序之后,如果不再次手动更改所有内容,我将无法运行collectstatic。如何配置用于开发的静态目录?

另外,是否有一种方法可以关闭托管特定应用程序的静态目录,以便确保我的单个静态目录设置正确(但仍然处于开发模式中)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-28 08:32:44

你让这件事变得更复杂了。在STATICFILES_DIRS中为项目级资产包括“静态”,但使STATIC_ROOT --即collectstatic命令的目标--可能是“静态文件”,并将该目录别名为Apache中的/static/。Django将自动从STATICFILES_DIRS中为您的资产提供服务,甚至不需要添加the模式。

票数 3
EN

Stack Overflow用户

发布于 2014-09-06 05:40:14

好吧,我完全没抓住重点。

  1. STATIC_ROOTcollectstatic用来为您汇集所有静态内容的。--您没有将您的文件添加到这里,是因为它会被覆盖。
  2. 现在,对于生产,您可以让您的get服务器托管目录STATIC_ROOT,并将STATIC_URL指向url,可以通过get服务器找到它。
  3. STATICFILES_DIRS允许您为collectstatic添加自己的目录以进行搜索,并将池添加到STATIC_ROOT中。然后,您可以很好地分离每个应用程序和/或公共项目静态的静态内容。
  4. 对于dev,django希望所有东西都在STATICFILES_DIRS中,并托管它,而不是STATIC_ROOT,因为这样就会有重复的。这对于更大的项目来说是有意义的,因为你想要处理每个应用程序的文件,而不是网站上的一些东西。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25543080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档