Найти - Пользователи
Полная версия: Django игнорирует {{ STATIC_URL }} в шаблоне
Начало » Django » Django игнорирует {{ STATIC_URL }} в шаблоне
1
lomach
Используется apache 2 + mod_wsgi
В конфиге apache 2 прописано следующее:
 # Статические файлы django-админки
Alias "/media_admin/" "/usr/lib/python2.7/dist-packages/django/contrib/admin/media/"
<Location "/media_admin/">
SetHandler None
</Location>
Alias "/media/" "/home/django-projects/local_calc/media/"
<Location "/media/">
SetHandler None
</Location>

# Статические файлы проекта
Alias "/static/admin/" "/usr/lib/python2.7/dist-packages/django/contrib/admin/media/"
<Location "/static/admin/">
SetHandler None
</Location>
Alias "/static/" "/home/django-projects/local_calc/static/"
<Location "/static/">
SetHandler None
</Location>
В шаблоне игнорируется {{ STATIC_URL }}. Полностью строка такая:
<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}css/docbook.css" />
Исходный код HTML в браузере выглядит так:
<link rel="stylesheet" type="text/css" href="css/docbook.css" />
То есть считает, что {{ STATIC_URL }} нет.
Кусок settings.py
# Absolute filesystem path to the directory that will hold user-uploaded files.
# Example: "/home/media/media.lawrence.com/media/"
MEDIA_ROOT = '/home/django-projects/local_calc/media/'

# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash.
# Examples: "http://media.lawrence.com/media/", "http://example.com/media/"
MEDIA_URL = '/media/'

# Absolute path to the directory static files should be collected to.
# Don't put anything in this directory yourself; store your static files
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
# Example: "/home/media/media.lawrence.com/static/"
STATIC_ROOT = '/home/django-projects/local_calc/files/'

# URL prefix for static files.
# Example: "http://media.lawrence.com/static/"
STATIC_URL = '/static/'

# URL prefix for admin static files -- CSS, JavaScript and images.
# Make sure to use a trailing slash.
# Examples: "http://foo.com/static/admin/", "/static/admin/".
ADMIN_MEDIA_PREFIX = '/media_admin/'

# Additional locations of static files
STATICFILES_DIRS = (
# Put strings here, like "/home/html/static" or "C:/www/django/static".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
"/home/django-projects/local_calc/static",
)

# List of finder classes that know how to find static files in
# various locations.
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
'django.contrib.staticfiles.finders.DefaultStorageFinder',
)
То есть, что не прописывай в STATIC_URL он все равно игнорируется.
Работает, если жестко прописать в шаблоне:
<link rel="stylesheet" type="text/css" href="../static/css/docbook.css" />
Кусок view.py для примера:
def current(request):
now = datetime.datetime.now()
t = get_template('template.html')
html = t.render(Context({'current_date': now}))
return HttpResponse(html)
Шаблон находит. Переменную вставляет.
Здесь http://python.su/forum/viewtopic.php?id=12597 нашел, что причина может быть в том, что не рендериться весь шаблон.
Если это так, то не пойму, как его весь рендерить?
Версия ОС, django и python в подписи.
likin
{% load static %}
{% get_static_prefix as STATIC_PREFIX %}

Попробуй так.
lomach
likin
{% load static %}
{% get_static_prefix as STATIC_PREFIX %}

Попробуй так.
Попробовал. Не помогло.
lomach
lomach
likin
{% load static %}
{% get_static_prefix as STATIC_PREFIX %}

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

from django.shortcuts import render_to_response

def current(request):
now = datetime.datetime.now()
title = "My first django application"
return render_to_response("template.html", {'current_date': now, 'title': title},
context_instance=RequestContext(request))
Ссылки, которые помогли мне разобраться:
http://stackoverflow.com/questions/5687136/static-media-fails-to-load-in-django
https://docs.djangoproject.com/en/dev/ref/templates/api/

Может кому-нибудь будет полезно.
Rodegast
http://progressors.org.ua/articles/4/
alexzander77
или РеквестКонтекст вместо просто Контекст ?
Imposeren
alexzander77
или РеквестКонтекст вместо просто Контекст ?
да-да-да. Проблема наверняка в этом.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB