Dajaxice не найден на рабочем сервере

У меня есть проект Django 1.4, работающий на Python 2.7, в котором я использую Dajaxice 0.5.4.1. Я настроил его на своей машине для разработки (Windows 7), и все работает отлично. Однако, когда я развертываю свое приложение на рабочем сервере (Ubuntu 12.04), я получаю ошибку 404 для файла dajaxice.core.js и не могу решить эту проблему, несмотря ни на что. Рабочий сервер работает с точно такими же версиями всего программного обеспечения.

Структура моего проекта выглядит так:

/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.pyandbase.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.

Я делаю что-то совершенно неправильно со своими статическими файлами здесь?
Что еще я должен попытаться исправить эту простую ошибку?


person errata    schedule 18.01.2013    source источник
comment
привет, у меня похожая проблема, в итоге ты решил свою?   -  person lamba    schedule 25.09.2013


Ответы (2)


Вы проверили, находится ли dajaxice.core.js, как и остальные активы, в вашей папке static/dajaxice? Если нет, проблема может быть связана с неправильной конфигурацией STATICFILES_FINDERS, проверьте Повторная установка dajaxice

Другая обычная проблема с collectstatic и dajaxice — запустить первый с помощью --link Используете ли вы эту опцию?

Надеюсь это поможет

person Jorge Bastida    schedule 24.01.2013
comment
Привет, Хорхе, спасибо за ответ! Я немного изменил структуру папок и соответствующим образом отредактировал свой исходный пост. Я не использовал опцию --link при сборе статических файлов. Также dajaxice.core.js после сбора находится в корне моего проекта в папке dajaxice˙. Я попытался объяснить это немного подробнее в своем исходном посте. - person errata; 29.01.2013
comment
Возможно, я забыл упомянуть, что я проверил предоставленную ссылку для установки dajaxice, и я почти уверен, что все на своем месте. Как я уже упоминал, все работает на сервере разработки (Windows 7), но происходит сбой, когда я развертываю его на рабочем сервере... - person errata; 29.01.2013

Я провожу несколько часов, пытаясь решить эту проблему. Это было безумием, потому что все отлично работало в моей среде разработки, но не на тестовом сервере, хотя все настройки dajax и dajaxice находились в общем файле базовых настроек. Я никогда не заставлял его работать, используя стандартный маршрут. Но это очень легко исправить:

1) Загрузите dajaxice.core.js в любой статический каталог, который вам нравится. Вы можете найти js в каталоге dajaxice в корне вашего проекта:

проект/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/, поэтому после разработки любого нового кода файл придется копировать в статический.

person Storn White    schedule 22.05.2014