Статические коллекции файлов - не отображается логотип navbar - PullRequest
0 голосов
/ 07 июля 2019

Я пытаюсь разместить изображение (логотип) на панели навигации.

Мой проект называется "mysite-project" (где manage-py), он содержит приложение "mysite".

Чтобы загрузить мой статический файл, я сделал следующее:

1) mysite-project / mysite / settings.py

Я добавил:

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

2) Создал папки static и добавил мой logo.png в:

MySite-проект / статический / MySite-проект / logo.png

3) mysite-project / templates / base.html

{% load staticfiles %}
    <nav class="navbar navbar-expand-lg navbar-light bg-light">
      <a class="navbar-brand" href="{% url 'home' %}">

        <img src="{% static 'mysite/logo.png' %}" height=30 width=30 class="d-inline-block alighn-top" />
        Code of Conduct
      </a>
</nav>

4) В mysite-project / mysite / urls.py

from django.contrib import admin
from django.urls import path, include
from django.views.generic.base import TemplateView
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    path('', TemplateView.as_view(template_name='home.html'), name='home'),
    path('admin/', admin.site.urls),
    path('users/', include('users.urls')),
    path('users/', include('django.contrib.auth.urls')),

] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

ОДНАКО изображение не отображается. Я думаю, у меня есть некоторые проблемы в settings.py для папок, но я не могу найти, где

1 Ответ

1 голос
/ 07 июля 2019

Проблема в настройках STATICFILES_DIRS. Если вы присоединитесь к пути с косой чертой в начале, то результат «проигнорирует» все предыдущие аргументы, и все после будет относительным к корню

.
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, '/static/')  # This will result in "/static/"
]


STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static')  # This will result in "<BASE_DIR>/static/"
]

STATIC_ROOT - это каталог, из которого вы хотите обслуживать файлы, и каталог, в котором collect_static будет заполняться всеми вашими статическими файлами, STATICFILES_DIRS - это место, откуда Django будет собирать файлы. STATICFILES_DIRS не должен содержать STATIC_ROOT. Обычный макет проекта примерно такой

myproject/  # The root of your repo
    myproject/
        myapp/
            static/  # This is where you put app specific assets
                ...
        static/  # This is where you put your generic static assets. Add this to STATICFILES_DIRS
            ...
    static/  # This is STATIC_ROOT and where your files are served from after being collected

Значение по умолчанию для STATICFILES_FINDERS будет выглядеть в STATICFILES_DIRS и в каждом статическом каталоге приложений. Если вы используете git, вы должны добавить статическую папку в корне вашего репозитория в .gitignore

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...