У меня проблемы с привязкой Css файла к шаблону Django - PullRequest
0 голосов
/ 01 февраля 2019

Я только начал изучать фреймворк django и попытался добавить и использовать статические файлы для разработки шаблона (для изменения фона) веб-страницы с помощью простого CSS, но мой файл CSS, похоже, не связан с HTML-шаблоном, как фонне меняются.

Я искал различные решения, и не похоже, что я делаю что-то не так в коде, но он все еще не работает.Пожалуйста, посмотрите на код, что я мог упустить?

Вот код для шаблона;

{% load staticfiles %}
<link rel="stylesheet" type="text/css" href="music/style.css">


{% if all_albums %}
<h3>My Albums</h3>
<ul>
    {% for album in all_albums %}
    <li><a href="{% url 'music:detail' album.id %}">{{album.album_title}}</a></li>
    {% endfor %}
</ul>

{% else %}
<h3>You don't have any albums</h3>
{% endif %} 

Вот CSS;

body{
    background: white url("images/blackbackground.jpg");
}

Iожидал, что фон изменится, но это не так.Сервер вернул сообщение об ошибке «Not Found: /music/music/style.css [01 / Feb / 2019 12:15:26]« GET /music/music/style.css HTTP / 1.1 «404 2559», ребята, что яотсутствует?

1 Ответ

0 голосов
/ 02 февраля 2019

Чтобы статические файлы работали в Django, вам нужно иметь пару переменных на месте.

Во-первых, в вашем settings.py вам нужно будет установить статические переменные файла.

Здесь я покажу вам пример того, что я использую:

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'staticfiles')
STATICFILES_DIRS = (
    'static',
    os.path.join(os.path.dirname(BASE_DIR), 'static')
)
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)

Это означает, что вам нужно иметь статическую папку в той же папке, что и ваше основное приложение.

Например:

├── apps
│   ├── api
│   ├── blog
│   └── home
├── manage.py
├── media
│   ├── images
│   └── original_images
├── requirements
│   ├── base.txt
│   ├── development.txt
│   └── production.txt
├── src    -----> THIS IS MY MAIN FOLDER
│   ├── __init__.py
│   ├── __pycache__
│   ├── db.sqlite3
│   ├── locale
│   ├── media
│   ├── settings ------> THIS IS MY SETTINGS FOLDER
│   ├── urls.py
│   └── wsgi.py
├── static    ------> THIS IS MY STATIC FOLDER
│   ├── css
│   ├── figures
│   ├── fonts
│   ├── img
├── templates
│   └── base.html
└── utilities

Далее вам нужно добавить это к своему основному urls.py:

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

# Serve static files with Django. Normally this is for development purposes.
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

После этого последняя часть перейдет в ваши шаблоны, вы 'Вам нужно будет загрузить статические теги шаблонов и использовать следующий синтаксис:

{% load staticfiles %}
<link rel="stylesheet" type="text/css" href="{% static 'music/style.css' %}">

В конце он будет отображать что-то вроде:

<link rel="stylesheet" type="text/css" href="/static/music/style.css">
...