Джанго статическая структура - PullRequest
8 голосов
/ 16 августа 2011

Я пытаюсь понять статическую структуру, которую пытается использовать django 1.3:

У меня есть проект с такой структурой:

Project
   someapp
      static
          someapp
             css
             etcetera
      models.py
      views.py
      urls.py
   urls.py
   manage.py
   settings.py

Теперь я хочу перезаписать администратора django ..Поэтому я должен установить эти настройки в settings.py, который я сделал, как показано ниже (basepath - это путь к текущей папке):

# Absolute path to the directory static files should be collected to.
# Don't put anything in this directory yourself; store your static files
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
# Example: "/home/media/media.lawrence.com/static/"
STATIC_ROOT = BASE_PATH+'/static/'

# URL prefix for static files.
# Example: "http://media.lawrence.com/static/"
STATIC_URL = '/static/'

# URL prefix for admin static files -- CSS, JavaScript and images.
# Make sure to use a trailing slash.
# Examples: "http://foo.com/static/admin/", "/static/admin/".
ADMIN_MEDIA_PREFIX = '/static/admin/'

# Additional locations of static files
STATICFILES_DIRS = (
    # Put strings here, like "/home/html/static" or "C:/www/django/static".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
)

Если я использую команду manage.py collectstatic, она собирает всестатические файлы (включая файлы администратора) в каталоге «static», как и ожидалось ... (в директории основного проекта)

Однако его содержимое еще не обработано, пока я не добавлю этот каталог в кортеж STATICFILES_DIRS,однако затем я должен изменить настройку каталога STATIC_ROOT, потому что в противном случае я получу ошибку, они не могут быть одинаковыми ...

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

Ответы [ 3 ]

10 голосов
/ 03 февраля 2012

Для местного развития, попробуйте эту структуру

Project
  Project (project directory with settings.py etc..)
       stylesheets
  someapp
  static
      base.css

С этим в settings.py:

import os
ROOT_PATH = os.path.dirname(__file__)
STATIC_ROOT = os.path.join(ROOT_PATH, 'static')
STATIC_URL = '/static/'
STATICFILES_DIRS = (
    os.path.join(ROOT_PATH, 'stylesheets'),
)

Запустите локальный сервер с python manage.py runserver и перейдите к http://localhost:8000/static/base.css

Вы должны увидеть таблицу стилей.

4 голосов
/ 16 августа 2011

STATICFILES_DIRS - это настройка, которую вы используете, чтобы объявить статические файлы, не относящиеся к конкретному приложению, живые в вашем проекте.STATIC_ROOT - это место, где статические файлы размещаются при их сборе.

Из документации django :

"Вероятно, ваш проект также будет иметь статические ресурсы, которые не привязаны кконкретное приложение. Параметр STATICFILES_DIRS - это кортеж каталогов файловой системы, который нужно проверять при загрузке статических файлов. Это путь поиска, который по умолчанию пуст. См. документы STATICFILES_DIRS, как расширить этот список дополнительных путей. "

Msgstr "Установите параметр STATIC_ROOT так, чтобы он указывал путь к файловой системе, по которому вы хотите собирать статические файлы, когда используете команду collectstatic management."

0 голосов
/ 16 августа 2011

Как насчет:

STATICFILES_DIRS = (
    # Put strings here, like "/home/html/static" or "C:/www/django/static".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
    STATIC_ROOT, 
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...