Django-не удается загрузить статические CSS-файлы

я запускаю сервер разработки 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"/>

где на самом деле находится. Я тоже побежал!--7--> чтобы убедиться, что все файлы были собраны.

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

from django.contrib.staticfiles.urls import staticfiles_urlpatterns

urlpatterns += staticfiles_urlpatterns()

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

14 ответов


внимательно прочитайте эту : https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/

и django.contrib.staticfiles в своем INSTALLED_APPS на settings.py?

и DEBUG=False? Если это так, вам нужно позвонить runserver С


С Django 1.11.х+, вы должны настроить статические файлы в settings.py as,

STATIC_URL = '/static/' # the path in url

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
]

и использовать его со статическим тегом шаблона,

{% load static %}
<link rel="stylesheet" href="{% static 'css/bootstrap.css' %}">

еще одна простая вещь, чтобы попытаться остановить, а затем перезагрузить сервер, например

$ python manage.py runserver

Я просмотрел другие ответы, но перезапуск сервера работал для меня.


эти отсутствуют в вашем settings.py? Я вставляю один из параметров моего проекта:

TEMPLATE_CONTEXT_PROCESSORS = ("django.contrib.auth.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.core.context_processors.static",
"django.contrib.messages.context_processors.messages")

кроме того, это то, что у меня есть в моем urls.py:

urlpatterns += patterns('', (
        r'^static/(?P<path>.*)$',
        'django.views.static.serve',
        {'document_root': 'static'}
))

эти шаги работают для меня, просто смотрите загрузить статические файлы (CSS, JS и изображения) в Django

я использую Django 1.10.

  1. создать папку static на том же уровне settings.py мой settings.py's путь это ~/djcode/mysite/mysite/settings.py, так это dir ~/djcode/mysite/mysite/static/;
  2. создать две папки static_dirs и static_root на static, это ~/djcode/mysite/mysite/static/static_dirs/ и ~/djcode/mysite/mysite/static/static_root/;
  3. написать settings.py такой:

    # Static files (CSS, JavaScript, Images)
    
    # https://docs.djangoproject.com/en/1.10/howto/static-files/
    
    STATIC_URL = '/static/'
    
    STATIC_ROOT = os.path.join(BASE_DIR, 'mysite', 'static', 'static_root')
    
    STATICFILES_DIRS = (
        os.path.join(BASE_DIR, 'mysite', 'static', 'static_dirs'),
    )
    
  4. сделать эта команда $ python manage.py collectstatic в Shell;

  5. создать папку css на static_dirs и положить в свой собственный .css файл, ваш файл css' путь ~/djcode/mysite/mysite/static/static_dirs/css/my_style.css;

  6. изменить <link> tag in : <link rel="stylesheet" type="text/css" href="{% static 'css/my_style.css' %}">,

наконец путь этой ссылки http://192.168.1.100:8023/static/css/my_style.css

Бинго!


добавил

PROJECT_ROOT = os.path.normpath(os.path.dirname(__file__))
STATICFILES_DIRS = ( os.path.join(PROJECT_ROOT, "static"), )

и удалены STATIC_ROOT С settings.py, это сработало для меня


добавить следующий код settings.py:

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
]

после этого создайте статическую папку в корневом каталоге вашего проекта.

для загрузки статических файлов по шаблонам используйте:

{% load static %}
  <img src="{% static "images/index.jpeg" %}" alt="My image"/>

добавить "django.core.context_processors.static", контекстный процессор в вашем settings.py

TEMPLATE_CONTEXT_PROCESSORS = (
"django.core.context_processors.static",

)


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

неправильно сконфигурировано: параметр STATICFILES_DIRS не должен содержать параметр STATIC_ROOT

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


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

{% load staticfiles %}

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


DEBUG = True в моих локальных настройках сделал это за меня.


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

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


мне пришлось использовать

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

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


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

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

"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")), )

- жилище.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>