1

我有一个 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 安装步骤,并将所有内容放在其位置(在settings.py˙urls.py andbase.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.

我在这里的静态文件做错了什么吗?
我还应该尝试什么来解决这个简单的错误?

4

2 回答 2

1

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

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

项目/dajaxice/dajaxice.core.js

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

2)在您的网页上,替换此:

{% dajaxice_js_import %}

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

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

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

于 2014-05-22T16:12:48.180 回答
1

您是否检查过其余资产dajaxice.core.js是否在您的static/dajaxice文件夹中?如果不是,该问题可能与未配置的有关STATICFILES_FINDERS,请再次检查安装 dajaxice

collectstatic 和 dajaxice 的另一个常见问题是运行第一个使用--linkAre you using this option?

希望这可以帮助

于 2013-01-24T23:08:28.170 回答