Как получить доступ к статическим файлам CSS с помощью Django - PullRequest
0 голосов
/ 26 марта 2019

Я не могу получить доступ к статическим файлам с помощью Django в cmd.Я получаю эту ошибку: "GET/'/static/blog/css/main.css HTTP/1.1" 404 2371.Это код:

# settings.py

STATICFILES_DIR = [
os.path.join(BASE_DIR, 'static'),
]
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'

 #base.html
   {% load static %}
<link rel="stylesheet"  type="text/css" href="'{% static 'blog/css/main.css' %}">

this is my directory
├───blog
│   ├───migrations
│   │   └───__pycache__
│   ├───templates
│   │   └───blog
│   │       └───static
│   │           └───blog
│   │               └───css
│   └───__pycache__
└───HelloDjango
    └───__pycache__

Ответы [ 2 ]

0 голосов
/ 26 марта 2019

Если вы используете Django 1.11 + , то добавьте следующий код в settings.py

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        ...
    },
]

Это позволит django сканировать ваши приложения для поиска в каталоге templates.

0 голосов
/ 26 марта 2019

Django и python никогда не лгут об исключениях, которые они выдают, и не имеют документации о том, как их разрешить.Если вы ссылаетесь ссылка , у них очень чистый подход, объясняющий, как его запустить и запустить в один миг.

Вам нужно место, куда он копирует статические файлы Django в какую-то локальную папку изоткуда он начинает рендеринг.

Может быть, это проблема, которую вы забыли добавить следующее?

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
    '/var/www/static/',   # -> your homework to figure what this is.
]

Как насчет добавления их в ваш файл urls.py

from django.conf import settings
from django.conf.urls.static import static

    urlpatterns = [
        # ... the rest of your URLconf goes here ...
    ] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

Возможно, вы, должно быть, все это сделали, но вы сказали Django собрать их все, выполнив следующую команду?

python manage.py collectstatic

AFAIK предпочтительная структура для статических элементов в Django:

.
├── my_app/
│   ├── static/
│   │   └── my_app/
│   │       └── admin-custom.css
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── static/
├── templates/
│   └── admin/
│       └── base.html
└── manage.py

Но ваша структура режиссеров - это не то, что вы упомянули о Джанго, из которого вы собираете его, не так ли?

Попробуйте все вышеперечисленное и дайте мне знать, сработало ли это для вас.

Еще один намек:

 <link rel="stylesheet" href="{% static "my_app/admin-custom.css" %}"> # figure out the hint here
...