Подтвердить что ты не робот

Django STATIC_URL не работает

Версия Django - 1.4. Я прочитал official document и искал мою проблему.

сначала я следил за официальным документом Управление статическими файлами добавил это в settings.py:

TEMPLATE_CONTEXT_PROCESSORS = (
  'django.core.context_processors.debug',
  'django.core.context_processors.i18n',
  'django.core.context_processors.media',
  'django.core.context_processors.static',
  'django.contrib.auth.context_processors.auth',
  'django.contrib.messages.context_processors.messages',
)

В моем шаблоне:

<link href="{{ STATIC_URL }}css/main.css" ...>

но в моем браузере есть:

<link href="css/main.css" ...> (Just render `STATIC_URL` as empty)

Мои настройки:

STATIC_ROOT = os.path.join(PROJECT_PATH, 'static')
STATIC_URL = '/static/'

в моем views

def register(request):
    ...
    return render_to_response('register.html', {'errors':errors})
4b9b3361

Ответ 1

Изменить

return render_to_response('register.html', 'errors':errors)

к

return render_to_response('register.html', {'errors': errors}, RequestContext(request))

Ответ 2

К сожалению, ярлык Django render_to_response по умолчанию использует обычный контекст шаблона, который не включает в себя контекстные процессоры и все их причудливые и полезные вещи, такие как STATIC_URL. Вам нужно использовать RequestContext, что делает это неудобно.

Это можно вызвать, используя новый render (доступный с Django 1.3):

from django.shortcuts import render

return render(request, 'register.html', {'errors':errors})

В Django 1.2 и старше вам нужно явно указать контекст:

from django.shortcuts import render_to_response
from django.template import RequestContext

return render_to_response('register.html', {'errors':errors},
    context_instance=RequestContext(request))

Ответ 3

В Django 1.4 вы должны использовать static templatetag 1.

Try:

{% load staticfiles %}
<link href="{% static "css/main.css" %} ...>

Ответ 4

Вам это не нужно в вашем обратном выражении?:

context_instance=RequestContext(request)

Ответ 5

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

Если вы запустите сервер разработки, не забудьте запустить сервер с небезопасным флагом, чтобы сервер обслуживал ваши статические файлы:

python manage.py runserver --insecure