DJango,在开发过程中使用OS包管理器提供的Javascript

时间:2015-03-12 12:02:15

标签: django package-managers django-settings

我准备在内部开发的包裹交付给客户。在内部开发期间,我们在代码存储库中使用了常见JavaScript库(jquery,openlayers,underscore)的副本,这是有效的。但是,在交付的系统中,管理层感觉(并且我同意)如果我们提供我们自己的副本并且#39;在这些共同的图书馆中,我们对它们负责。

因此,我试图重做系统,以便它从/ usr / share / javascript服务这些库,这是OS(Ubuntu)放置它们的地方。使用Apache部署包时,这可以正常工作;但是从

运行时它不起作用
python manage.py runserver

我需要将什么添加到我的settings.py中,以便runserver将在URL上提供来自/ usr / share / javascript的文件

http://localhost:8000/javascript/

我如何确保这些文件不会被' collectstatic'

收集?

谢谢!

1 个答案:

答案 0 :(得分:0)

经过大量的捣乱,我有了解决方案;但它复杂而丑陋。使runserver模拟apache环境或apache模拟runserver环境是不可能的。因此,为了使Apache和runserver都能使用包管理器提供的javascript库,需要进行以下关键更改:

  1. /usr/share添加到STATICFILES_DIRS中的settings.py,但
  2. 在运行collectstatic之前将其删除
  3. Options FollowSymLinks添加到/var/www/static
  4. 的apache配置中
  5. 符号链接/usr/share/javascript/var/www/static
  6. 因此,为清楚起见,Apache配置包含

    Alias /static/ /var/www/static/ <Directory /var/www/static> Options FollowSymLinks Order deny, allow Allow from all </Directory>

    settings.py包含

    STATIC_ROOT = os.path.join(BASE_DIR, '/myapp/static') STATICFILES_DIRS = ( '/usr/share', ) STATIC_URL = '/static/'

    在运行collectstatic之前,/usr/share已从settings.py中删除,否则您会收集很多您不想收集的内容。

    我并不是说这是一个理想的解决方案,但它正在发挥作用。