1

Я пытаюсь изменить проект django 1.7, содержащий папку настроек с несколькими файлами настроек, а не только один файл settings.py. Я не знаю, как правильно настроить расположение статических файлов. Что мне не хватает? Мой сайт больше не работает.Файл с несколькими настройками в Django 1.7

dev_settings.py

from unipath import Path 

PROJECT_DIR = Path(__file__).ancestor(3) 
MEDIA_ROOT = PROJECT_DIR.child("media") 
STATIC_ROOT = PROJECT_DIR.child("static") 
STATICFILES_DIRS = (
    PROJECT_DIR.child("static"), 
) 
TEMPLATE_DIRS = (
    PROJECT_DIR.child("templates"), 
) 
STATIC_URL = '/static/' 

home.html

{% load static from staticfiles %} 
<a href="{% url 'bank:bank_home' %}"><img src="{% static 'images/logo-bank.png' %}" class="img-responsive navlogo" alt="My Bank"></a> 
<script src="{% static 'js/bootstrap_js/bootstrap.min.js' %}"></script> 
+0

Проблема в том, что вы не знаете, как сказать Django, где найти измененный файл настроек? Или вы не знаете, как настроить статические файлы Django? Решения этих двух проблем сильно различаются (и для того, чтобы найти подходящий ответ, требуется больше информации). –

+0

@MattCooper Я не знаю, как настроить статические файлы Django теперь, когда мой файл настроек переместился в этот новый каталог «настроек», который я создал. Кажется, некоторые из них, но не все ...? – steph

+0

Я изначально пытался использовать '{{STATIC_URL}}' в своем шаблоне, но вместо этого прочитал об использовании тега шаблона. Не знаю, если это имеет значение ...? – steph

ответ

1

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

  • STATIC_ROOT - определяет полный путь туда, где статическое файлы будут агрегированы командой управления collectstatic (например, /var/www/project/staticfiles/).
  • STATIC_URL - определяет, что URL Django подставит в шаблоны для пути выше, чтобы спасти вас от необходимости жестко кодировать его (обычно /статические/)
  • STATICFILES_DIRS - кортеж или список путей к файлам для Django в также объединяет файлы, не связанные с каким-либо конкретным приложением (по умолчанию Django автоматически найдет и агрегирует все файлы в каталоге static любых установленных приложений - см. STATICFILES_FINDERS для получения дополнительной информации). Обратите внимание, что это НЕ должно включать путь, определяемый STATIC_ROOT; этот путь предназначен для того, где Django копирует ваши файлы для их обслуживания.

Другие значения параметров по умолчанию, как правило, начинаются с (docs для Django 1.7 - here). Убедитесь, что вы запустили python manage.py collectstatic до python manage.py runserver, чтобы скопировать ваши статические файлы в местоположение, определенное STATIC_ROOT.

Вы можете установить местоположение файла настроек проекта, изменяя следующую строку в manage.py:

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "my.project.base_settings") 

В качестве альтернативы, вы можете пройти в --settings при запуске manage.py если вы хотите использовать другой (в разработчике и т.д.):

python manage.py runserver --settings=my.project.dev_settings 

Обратите внимание, что обозначение используется точка соответствует * .py файла в структуре каталогов вашего проекта, по сравнению с manage.py. Таким образом, расположение файла в первом примере выше будет на my/project/base_settings.py. Есть еще несколько деталей в docs.

+0

моя проблема заключается в том, что у меня нет только одного файла настроек, поэтому местоположение «my/project/settings/base_settings.py» Я знаю, как указать конкретный файл, но не могу правильно настроить, где найти статические файлы. – steph

+0

Да, я неверно истолковал основную проблему, с которой вы сталкиваетесь. Будут добавлены дополнительные сведения. – ropable

0

Это может помочь увидеть рабочую реализацию Django и сравнить ее с тем, что вы ошиблись. Вот простой проект Django с множеством настроек файлов: https://github.com/marcofucci/cookiecutter-simple-django

(Это проект cookiecutter, который может быть полезным для вас - если не просто игнорировать его и посмотреть в {{-репо имя cookiecutter}} для фактического django)

Кроме того, я рекомендую «Два совпадающих Django». Просто взял его несколько дней назад, любя его!

+0

Благодарим вас за предложения @samGbos. Я действительно использовал книгу Two Scoops и следил за их главой по созданию нескольких файлов настроек, но не могу получить ее совершенно правильно (возможно, это потому, что я использую 1.7) – steph

0

Что именно происходит не так? Включили ли вы их в свой файл url.py?

from django.conf.urls.static import static 
from django.contrib.staticfiles.urls import staticfiles_urlpatterns 

urlpatterns = patterns('', 
         url(r'^admin/', include(admin.site.urls)), 
         ) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 
urlpatterns += staticfiles_urlpatterns()