2017-02-21 4 views
0

У меня есть проект 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

+0

ты в разработки или производства? И не могли бы вы поместить файл пути для logo.png. –

+0

@Gil Добавил его. Благодаря! – Luca

ответ

1

Попробуйте использовать решение serve static files during development:

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

urlpatterns = [ 
    .... 
] 

if settings.DEBUG: 
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) 

ПРОБЛЕМА РЕШИТЬ:

Ваш STATIC_URL должен быть STATIC_URL = '/static/' в вашем settings.py

+0

Я пробовал это, и я получаю то же самое об ошибке:/ – Luca

+1

И ваш 'STATIC_URL' должен быть' STATIC_URL = '/ static /''' в ваших настройках.py –

+0

В этом была проблема! Можете ли вы написать это как ответ, чтобы я мог принять его! – Luca

Смежные вопросы