2015-03-09 2 views
0

У меня были статические файлы работают правильно, пока я не попробовал добавить эту библиотеку https://github.com/ierror/django-js-reverseДжанго находит все статические файлы, кроме одного - 404

я следовал инструкциям со страницы, но Джанго до сих пор не может найти новый ресурс ,

из settings.py

STATIC_ROOT = 'staticfiles' 
STATIC_URL = '/static/' 

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static/'), 
) 


INSTALLED_APPS = (
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'django_js_reverse', 
    ..., 
) 

в моем шаблоне

<script src="{% static 'django_js_reverse/js/reverse.js' %}"></script> 

моя структура каталогов выглядит следующим образом

staticfiles/ 
    admin/ 
    dist/ 
    django_js_reverse/ 
     js/ 
      reverse.js 

После запуска

python manage.py collectstatic 
python manage.py runserver 

Я также попытался запустить следующий в соответствии с инструкциями библиотеки, но не повезло

./manage.py collectstatic_js_reverse 

Здесь нет выхода из runserver при попытке загрузить страницу.

[08/Mar/2015 19:12:33] "GET /static/custom.css HTTP/1.1" 304 0 
[08/Mar/2015 19:12:33] "GET /static/dist/css/bootstrap.min.css HTTP/1.1" 304 0 
[08/Mar/2015 19:12:33] "GET /static/django_js_reverse/js/reverse.js HTTP/1.1" 404 1697 
[08/Mar/2015 19:12:33] "GET /static/dist/js/bootstrap.min.js HTTP/1.1" 304 0 
[08/Mar/2015 19:12:33] "GET /static/csrf.js HTTP/1.1" 304 0 
[08/Mar/2015 19:12:33] "GET /static/custom.js HTTP/1.1" 304 0 

Я не могу понять, где проблема. Настройки статических файлов, очевидно, настроены правильно, потому что все остальные файлы загружаются в порядке. Я должен упустить что-то очевидное. Любая помощь будет оценена \

UPDATE

Я попытался переместить reverse.js файл Dist/но она по-прежнему возвращает набор 404.

разрешения на все файлы одинаковы

ls -la staticfiles/dist/js 
-rw-r--r-- 1 adam staff 67155 Mar 8 15:06 bootstrap.js 
-rw-r--r-- 1 adam staff 35601 Mar 8 15:06 bootstrap.min.js 
-rw-r--r-- 1 adam staff 484 Mar 8 15:06 npm.js 
-rw-r--r-- 1 adam staff 3258 Mar 10 10:31 reverse.js 
+0

' collectstatic' не поможет, если вам работают 'runningerver'. Является ли 'staticfiles' вашим' STATIC_ROOT' или одним из 'STATICFILES_DIRS'? Попробуйте скопировать файл 'reverse.js' в' dist', соответствующим образом измените сценарий src и проверьте, работает ли это. – Kedar

+0

Иногда у вас может возникнуть проблема с файлами gif. Попробуйте chmod + x them :) – DAKZH

+0

Можете ли вы разместить свой '.gitignore'? – erip

ответ

2

У вас такая же проблема и все. Url to js file кажется законным, но это не так (с Django 1.9, по крайней мере).

Я изменил его от

<script src="{% static 'django_js_reverse/js/reverse.js' %}"></script> 

в

<script src="{% url 'js_reverse' %}"></script> 

И вам нужен этот шаблон URL-адрес в urls.py для этого решения

# import view 
from django_js_reverse.views import urls_js 

# and add this in url patterns 
url(r'^jsreverse/$', 'django_js_reverse.views.urls_js', name='js_reverse'), 

И теперь он работает без любая проблема . Надеюсь, это поможет кому-то.

0

Недавно я столкнулся с этой проблемой, вот как я ее решил.

Одним из возможных решений является копирование reverse.js в ваш статический каталог, в данном случае BASE_DIR/static/.

# set the JS-reverse output to the static dir 
JS_REVERSE_OUTPUT_PATH=os.path.join(BASE_DIR, 'static/') 

# update the script's path 
<script src="{% static 'reverse.js' %}"></script> 

Тогда:

./manage.py collectstatic_js_reverse 
./manage.py runserver # or collectstatic 

Другим решением может быть чередуя статического файла и использования просмотров в шаблонах. Предполагая, что вы добавили URL, как описано в ответе Przemysław Melnarowicz «s, и что SERVE_STATIC говорит, если статические файлы обслуживаются из Джанго приложения (./manage.py runserver):

{% if SERVE_STATIC %} 
    {# get script from view #} 
    <script src="{% url 'js_reverse' %}"></script> 
{% else %} 
    {# get script from static file #} 
    <script src="{% static 'django_js_reverse/js/reverse.js' %}"></script> 
{% endif %}