2013-01-18 16 views
1

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

我的项目结构如下:

/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.py中and 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 

我在django.conf文件的Alias指令,它看起来是这样的:

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

嗨,我有一个类似的问题,你最终解决你的问题吗? – lamba

回答

1

您是否检查了其余资产dajaxice.core.js是否在您的static/dajaxice文件夹中?如果没有,问题可能与STATICFILES_FINDERS的思念配置有关,检查Installing dajaxice again

另一个常用问题与collectstatic和dajaxice是使用此选项,您运行使用--link第一?

希望这有助于

+0

嗨豪尔赫,谢谢你的回答!我改变了我的文件夹结构,并相应地编辑了我原来的帖子。当我收集静态文件时,我没有使用“--link”选项。此外,'dajaxice.core.js'在位于我的项目根目录下的dajaxice文件夹中。我试图在我原来的帖子中稍微解释一下。 – errata

+0

我可能忘了提及我没有检查提供的用于安装dajaxice的链接,并且我非常确定所有东西都在它的位置上。正如我已经提到的,一切工作在开发服务器(Windows 7)上,但是当我将它部署在生产服务器上时,它会失败...... – errata

1

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

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

项目/ dajaxice/dajaxice.core.js

在我的情况,我把文件以及所有我的其他的JS库静态/ JS 。与正常的日常链接到JS库

{% dajaxice_js_import %} 

2)在您的网页,更换此。在我的情况下:

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

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

相关问题