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.
- создать папку
static
на том же уровнеsettings.py
мойsettings.py
's путь это~/djcode/mysite/mysite/settings.py
, так это dir~/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
в Shell;создать папку
css
наstatic_dirs
и положить в свой собственный.css
файл, ваш файл css' путь~/djcode/mysite/mysite/static/static_dirs/css/my_style.css
;изменить
<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 %}
это загружает то, что нужно, но по какой-то причине я испытал, что иногда работает без этого... ???
посмотрите, включено ли ваше основное приложение (где находится статический каталог) в ваш 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>