Django - Не удается загрузить статические CSS-файлы - PullRequest
48 голосов
/ 27 сентября 2011

Я использую сервер разработки Django (runserver) на своем локальном компьютере (Mac OS X) и не могу загрузить файлы CSS.

Вот соответствующие записи в settings.py:

STATIC_ROOT = '/Users/username/Projects/mysite/static/'

STATIC_URL = '/static/'

STATICFILES_DIRS = (
'/Users/thaymore/Projects/mysite/cal/static',
)

STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
#'django.contrib.staticfiles.finders.DefaultStorageFinder',
)

INSTALLED_APPS = (
# other apps ...
'django.contrib.staticfiles',
)

В моем views.py я запрашиваю контекст:

return render_to_response("cal/main.html",dict(entries=entries),context_instance=RequestContext(request))

И в моем шаблоне {{ STATIC_URL }} правильно отображает:

<link type="text/css" href="{{ STATIC_URL }}css/main.css" />

Превращается в:

<link type="text/css" href="/static/css/main.css"/>

Где именно находится файл. Я также запустил collectstatic, чтобы убедиться, что все файлы были собраны.

У меня также есть следующие строки в моем urls.py:

from django.contrib.staticfiles.urls import staticfiles_urlpatterns

urlpatterns += staticfiles_urlpatterns()

Я новичок в Django, поэтому, возможно, мне не хватает чего-то простого - буду признателен за любую помощь.

Ответы [ 16 ]

0 голосов
/ 05 апреля 2019

Вы можете просто установить STATIC_ROOT в зависимости от того, работаете ли вы на вашем локальном хосте или на вашем сервере.Чтобы определить это, обратитесь к этой записи .

. И вы можете переписать свою конфигурацию STATIC_ROOT как:

import sys

if 'runserver' in sys.argv:
    STATIC_ROOT = ''
else:
    STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'
0 голосов
/ 19 июня 2015

Проверьте, включено ли ваше основное приложение (где находится статический каталог) в INSTALLED_APPS.

Поиск файлов осуществляется с помощью включенных искателей. По умолчанию выполняется поиск во всех местоположениях, определенных в STATICFILES_DIRS, и в «статическом» каталоге приложений, заданном параметром INSTALLED_APPS.

0 голосов
/ 07 мая 2014

Я должен был использовать

STATICFILES_DIRS = ( '/home/USERNAME/webapps/django/PROJECT/static/', )

Это помогло мне.

0 голосов
/ 09 ноября 2013

Я попробовал эту модель, и она сработала.

Изменения в настройках в соответствии с проектом django, созданным с помощью оболочки

"django-admin.py startproject xxx"# here xxx is my app name

, измените папку, как показано ниже в структуре, загружая наши статические файлы для запускасервер

Структура xxx:

>     .
>     |-- manage.py
>     |-- templates
>     |   `-- home.html
>     `-- test_project
>         |-- __init__.py
>         |-- settings.py
>         |-- static
>         |   |-- images
>         |   |   `-- 01.jpg
>         |   |-- style.css
>         |-- urls.py
>         `-- wsgi.py

- изменения в Settings.py

import os
INSTALLED_APPS = (    'xxx',# my app is to be load into it)

STATIC_ROOT = ''
STATIC_URL = '/static/'
PROJECT_DIR = os.path.dirname(__file__)
TEMPLATE_DIRS = (      os.path.join(PROJECT_DIR, '../templates'),)#include this 

- изменения в urls.py

from django.conf.urls import patterns, include, url
from django.views.generic import TemplateView

class DirectTemplateView(TemplateView):
    extra_context = None
    def get_context_data(self, **kwargs):
        context = super(self.__class__, self).get_context_data(**kwargs)
        if self.extra_context is not None:
            for key, value in self.extra_context.items():
                if callable(value):
                    context[key] = value()
                else:
                    context[key] = value
        return context

urlpatterns = patterns('', 
    url(r'^$', DirectTemplateView.as_view(template_name="home.html")), )

- home.html

<html>
    <head>
        <link href="{{STATIC_URL}}style.css" rel="stylesheet" type="text/css">
    </head>
    <body>
        <h1>This is home for some_app</h1>
      <img src="{{STATIC_URL}}/images/01.jpg" width=150px;height=150px; alt="Smiley ">
    </body>
</html>
0 голосов
/ 11 апреля 2013

Вы добавили в свои шаблоны:

{% load staticfiles %}

Это загружает то, что нужно, но по какой-то причине я испытал, что иногда это работает без этого ... ???

0 голосов
/ 16 февраля 2013

У вас был тот же путь в STATICFILES_DIRS и STATIC_ROOT, я столкнулся с той же проблемой, и ниже было исключение -

Неправильно настроен: параметр STATICFILES_DIRS не должен содержать параметр STATIC_ROOT

Для локальных вам не нужен STATICFILES_DIRS, так как в любом случае вам не нужно запускать collectstatic. Как только вы прокомментируете это, оно должно работать нормально.

...