У меня есть проект Django, который имеет следующие параметры для загрузки статических файлов:Джанго загрузка статического файла добавляет несуществующую директорию на путь к файлу
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'proj.apps.ProjConfig',
]
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = os.path.join(BASE_DIR, 'static/')
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "images/"),
]
LOGIN_REDIRECT_URL = 'login'
Мой urls.py
определяется как:
from django.conf.urls import url
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.contrib import admin
from django.contrib.auth import views as auth_views
from proj import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^$', views.index, name='index'),
url(r'^login/$', auth_views.login, {'template_name': 'login.html'}, name='login'),
url(r'^logout/$', auth_views.logout, name='logout'),
] + staticfiles_urlpatterns()
У меня есть файл с именем logo.png
, который копируется в каталог satic, когда я запускаю python manage.py collectstatic
, как и ожидалось.
Мой шаблон для входа в систему (login.html
) пытается загрузить этот файл следующим образом:
{% extends 'base.html' %}
{% block title %}Login{% endblock %}
{% block content %}
{% load static %}
<img src="{% static "logo.png" %}" alt="My image"/>
<h2>Login</h2>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Login</button>
</form>
{% endblock %}
Теперь изображение не загружается, а ошибка приходит с:
Not Found: /login/logo.png
Я не знаю, почему он добавляет каталог /login/
к пути, и я пытался понять это часами без везения!
Я в разработке (Debug=True
) на компьютере с Windows. Путь к файлу logo.png
является proj_base_directory\\static\logo.png
ты в разработки или производства? И не могли бы вы поместить файл пути для logo.png. –
@Gil Добавил его. Благодаря! – Luca