Подтвердить что ты не робот

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

В моем view.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, так что, наверное, пропустил что-то простое - буду признателен за любую помощь.

4b9b3361

Ответ 1

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

Есть ли django.contrib.staticfiles в вашем INSTALLED_APPS в settings.py?

DEBUG=False? Если это так, вам нужно вызвать runserver с параметром --insecure:

python manage.py runserver --insecure

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

Ответ 2

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

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' %}">

Ответ 3

Еще одна простая задача - остановить, а затем перезапустить сервер, например.

$ python manage.py runserver

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

Ответ 4

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

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

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

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

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

Ответ 5

Пропущены ли они из 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'}
))

Ответ 6

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

Ответ 7

добавлен

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

и удалил STATIC_ROOT из settings.py, он работал у меня

Ответ 8

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

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

  • создайте папку static на том же уровне settings.py, мой путь settings.py равен ~/djcode/mysite/mysite/settings.py, поэтому этот каталог ~/djcode/mysite/mysite/static/;
  • создайте две папки static_dirs и static_root в static, которые ~/djcode/mysite/mysite/static/static_dirs/ и ~/djcode/mysite/mysite/static/static_root/;
  • напишите 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'),
    )
    
  • выполните эту команду $ python manage.py collectstatic в оболочке;

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

  • изменить тег <link> в .html файле: <link rel="stylesheet" type="text/css" href="{% static 'css/my_style.css' %}">,

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

Бинго!

Ответ 9

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

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

)

Ответ 10

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

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

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

Ответ 11

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

{% load staticfiles %}

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

Ответ 12

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

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

Ответ 13

Вы можете просто установить 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/'

Ответ 14

Если вы установили DEBUG = FALSE, вам нужно выполнить следующие шаги

В вашем файле urls.py: добавьте эту строку

from django.views.static import serve

url(r'^media/(?P<path>.*)$', serve,{'document_root': settings.MEDIA_ROOT}),
url(r'^static/(?P<path>.*)$', serve,{'document_root': settings.STATIC_ROOT}),

Ответ 15

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

Изменение настроек в соответствии с проектом 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>

Ответ 16

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

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

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