我有一个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.
我的静态文件在这里完全出错了吗? 我还应该尝试解决这个简单的错误呢?
答案 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中注册,因此在开发任何新代码之后,必须将该文件复制到静态。