Где поместить изображения, которые вызываются css файлом в Django? - PullRequest
1 голос
/ 23 сентября 2011

Я скачал онлайн-шаблон, который включает в себя базовый HTML-файл, изображения и файл CSS.Теперь я хотел бы реализовать все это в django.

Пока я пробовал вот так, но без каких-либо хороших результатов, страница отображается без файла CSS или без изображений, или с обоими ... хорошо, что-то не так

settings.py:

MEDIA_ROOT = rel('resources')
MEDIA_URL = '/resources/'

base.html:

<link rel="stylesheet" type="text/css" href="resources/style.css" />

Я поместил свои изображения и файл css в папку ресурсов и папку с шаблонами ине работает, помогите пожалуйста

Ответы [ 4 ]

2 голосов
/ 23 сентября 2011

EDIT:

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

settings.py:

# 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 = PROJECT_ROOT + 'static/'

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

# 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.
    "C:/www/django/static",
)

# List of finder classes that know how to find static files in
# various locations.
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)

и добавьте URL к urls.py:

urlpatterns += staticfiles_urlpatterns()

ОРИГИНАЛЬНЫЙ ОТВЕТ:

Это может быть довольно запутанным. Каталог MEDIA_ROOT предназначен для файлов, загружаемых с помощью формы загрузки файлов. Для физических файлов, которые напрямую доступны по запросу клиента (например, таблицы стилей, сценарии и изображения), вы должны использовать STATIC_ROOT и STATIC_URL. Я думаю, STATIC_ROOT должен быть абсолютным путем.

settings.py

# the url: myserver.com/static/
STATIC_URL = '/static/'
# refers to this directory: 
STATIC_ROOT = '/home/user/static server files'

допустим, вы поместили свой css в "/ home / user / static server files / css /" и затем обратились к ним следующим образом:

base.html

<link rel="stylesheet" href="{{ STATIC_URL }}css/style.css" />
1 голос
/ 29 сентября 2011

Предполагается, что вы сейчас работаете на сервере разработки.

MEDIA_URL = 'http://localhost/media/'

расчетные пути для django и сайта, используемого в качестве отправной точки для различных других путей DJANGO_ROOT = os.path.dirname(os.path.realpath(django.__file__)) SITE_ROOT = os.path.dirname(os.path.realpath(__file__)) PROJECT_ROOT = os.path.dirname(__file__)

TEMPLATE_DIRS = ( os.path.join(SITE_ROOT, 'templates/'), )

MEDIA_ROOT = os.path.join(SITE_ROOT, 'templates/media/')

Вышесказанное должно решить вашу проблему, так как iot отлично сработало.

При обращении к файлам css, которые хранятся в "templates / media "<link href="/media/css/base/base.css" rel="stylesheet" type="text/css"></link>

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

0 голосов
/ 13 января 2012

это может решить вашу проблему.Я предлагаю вам назвать вашу папку "static" для статических файлов, которые вы используете (css, js и images).

  1. откройте ваши settings.py и

    -addэто в первой строке вашего файла:

    import os.path

    - измените значение вашего STATIC_ROOT на:

    STATIC_ROOT = os.path.join (PROJECT_DIR, 'static/ ')

    - измените значение вашего STATIC_URL на:

    STATIC_URL =' / static / '

  2. создайте папку с именем "static" в вашемroot проекта.

  3. создайте папку для ваших статических файлов, таких как css, javascript и т. д. Я рекомендую использовать другую папку для файлов разных типов.
  4. открытьurls.py вашего проекта -Добавьте это в ваш импорт: настройки импорта -Добавьте это в шаблоны URL:

    (r '(?:. *? /)? (? P (css | jquery | jscripts)| images) /.+) $ ',' django.views.static.serve ', {' document_root ': settings.STATIC_ROOT}),

    ПРИМЕЧАНИЕ. В этом примере есть папки с именами css, jqueryjscriptsи изображения внутри моей статической папки.

  5. В шаблон добавьте следующее:

для файлов CSS: (в этом примере default.css - этоимя файла CSS)

<link href="/{{ STATIC_ROOT }}css/default.css" rel="stylesheet" type="text/css" media="all" />

для JavaScript:

<script type="text/javascript" src="/{{ STATIC_ROOT }}jquery/jquery.js"></script>
0 голосов
/ 24 сентября 2011

хм к сожалению это не помогло.Я не смог найти переменную STATIC_URL / ROOT в settings.py, поэтому я добавил ее, как описано выше, также добавил переменную в base.html, но рендеринг по-прежнему не может найти файл CSS.исследовал код, который работает.Я получил хороший исходный код общедоступного приложения и проверил base.html, и он говорит так:

<link rel="stylesheet" href="{{ cssRootUrl }}style.css"

, затем я пошел, чтобы проверить settings.py и там не определен cssRootUrlПоэтому я понятия не имею, где еще можно скрыть переменные такого типа ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...