在生产服务器上找不到Dajaxice

时间:2013-01-18 15:32:05

标签: ajax django ubuntu django-staticfiles dajaxice

我有一个Django 1.4项目,在Python 2.7上运行,我正在使用Dajaxice 0.5.4.1。我已经在我的开发机器(Windows 7)上进行了设置,一切都运行良好。但是,当我将我的应用程序部署到生产服务器(Ubuntu 12.04)时,dajaxice.core.js文件出现404错误,无论如何都无法解决此问题。生产服务器使用与所有软件完全相同的版本。

我的项目结构如下:

/myproject
/myproject/myproject-static/ <-- all the static files are here
/myproject/myproject-static/css/
/myproject/myproject-static/img/
/myproject/myproject-static/js/
/myproject/templates/

/myproject/myproject/
/myproject/main/
/myproject/app1/
/myproject/app2/
/myproject/app3/
etc.

我正在关注Dajaxice安装步骤here并将所有内容放在其位置(settings.py,˙urls.pyand base.html`文件中。)

我的settings.py文件也包含以下值:

from unipath import Path
PROJECT_ROOT = Path(__file__).ancestor(3)

STATIC_ROOT = ''
STATIC_URL = '/myproject-static/'
STATICFILES_DIRS = (
    PROJECT_ROOT.child('myproject-static'),
)
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    'dajaxice.finders.DajaxiceFinder',
)

DAJAXICE_MEDIA_PREFIX = "dajaxice"
DAJAXICE_DEBUG = True

我的Alias文件中有django.conf指令,如下所示:

Alias /myproject-static/ "/path/to/myproject/myproject-static/"

我在我的生产服务器上做了collectstatic,并在项目根目录中的几个文件夹中收集了所有静态文件。所以,现在当我查看我部署的网站时,我可以看到CSS已正确应用,JavaScript工作正常,并且网站周围的导航按预期工作。一切都很好,除非Ajax完全被破坏,因为永远不会包含dajaxice.core.js

收集静态后我的项目文件夹结构如下所示:

/myproject
/myproject/myproject-static/ <-- all the static files are originally here
/myproject/myproject-static/css/
/myproject/myproject-static/img/
/myproject/myproject-static/js/
/myproject/templates/

/myproject/admin/ <-- folder created with 'collectstatic' command
/myproject/css/ <-- folder created with 'collectstatic' command
/myproject/dajaxice/ <-- dajaxice.core.js is located here
/myproject/django_extensions/ <-- folder created with 'collectstatic' command
/myproject/img/ <-- folder created with 'collectstatic' command
/myproject/js/ <-- folder created with 'collectstatic' command

/myproject/myproject/
/myproject/main/
/myproject/app1/
/myproject/app2/
/myproject/app3/
etc.

我的静态文件在这里完全出错了吗? 我还应该尝试解决这个简单的错误呢?

2 个答案:

答案 0 :(得分:1)

您是否检查了dajaxice.core.js文件夹中是否有static/dajaxice作为剩余资产?如果没有,则问题可能与STATICFILES_FINDERS的未命中配置有关,请检查Installing dajaxice again

collectstatic和dajaxice的另一个常见问题是使用--link运行第一个问题你使用这个选项吗?

希望这有帮助

答案 1 :(得分:1)

我花了几个小时来解决这个问题。这很疯狂,因为一切都在我的开发环境中运行良好,但在测试服务器上却没有,即使所有dajax和dajaxice设置都在公共基础设置文件上。我从来没有使用标准路线工作。但这是一个非常简单的解决方法:

1)将dajaxice.core.js下载到任何静态目录中。您可以在项目根目录的dajaxice目录中找到js:

项目/ dajaxice / dajaxice.core.js

就我而言,我把文件放在static / js和我所有的其他js库旁边。

2)在您的网页上,将其替换为:

{% dajaxice_js_import %}

与js库的正常日常链接。就我而言:

<script src="/static/js/dajaxice.core.js" type="text/javascript"></script>

不幸的是,此补丁仅适用于已开发的代码。如果您在开发环境中使用它,则新的dajaxice代码将在原始项目/ dajaxice / location中注册,因此在开发任何新代码之后,必须将该文件复制到静态。