Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 25, 2012 10:39:35

lomach
От:
Зарегистрирован: 2012-01-28
Сообщения: 43
Репутация: +  0  -
Профиль   Отправить e-mail  

Django игнорирует {{ STATIC_URL }} в шаблоне

Используется 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 в подписи.




Django 1.8, БД MySQL 6
Debian Linux 7.0

Отредактировано (Фев. 25, 2012 10:42:03)

Офлайн

#2 Фев. 25, 2012 12:00:01

likin
От:
Зарегистрирован: 2010-03-15
Сообщения: 114
Репутация: +  1  -
Профиль   Отправить e-mail  

Django игнорирует {{ STATIC_URL }} в шаблоне

{% load static %}
{% get_static_prefix as STATIC_PREFIX %}

Попробуй так.



Офлайн

#3 Фев. 25, 2012 14:42:39

lomach
От:
Зарегистрирован: 2012-01-28
Сообщения: 43
Репутация: +  0  -
Профиль   Отправить e-mail  

Django игнорирует {{ STATIC_URL }} в шаблоне

likin
{% load static %}
{% get_static_prefix as STATIC_PREFIX %}

Попробуй так.
Попробовал. Не помогло.




Django 1.8, БД MySQL 6
Debian Linux 7.0

Офлайн

#4 Фев. 25, 2012 16:04:15

lomach
От:
Зарегистрирован: 2012-01-28
Сообщения: 43
Репутация: +  0  -
Профиль   Отправить e-mail  

Django игнорирует {{ STATIC_URL }} в шаблоне

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/

Может кому-нибудь будет полезно.




Django 1.8, БД MySQL 6
Debian Linux 7.0

Офлайн

#5 Фев. 25, 2012 19:04:40

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2763
Репутация: +  185  -
Профиль   Отправить e-mail  

Django игнорирует {{ STATIC_URL }} в шаблоне

http://progressors.org.ua/articles/4/



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#6 Фев. 25, 2012 19:41:30

alexzander77
От:
Зарегистрирован: 2009-01-27
Сообщения: 46
Репутация: +  1  -
Профиль   Отправить e-mail  

Django игнорирует {{ STATIC_URL }} в шаблоне

или РеквестКонтекст вместо просто Контекст ?



Офлайн

#7 Фев. 25, 2012 21:46:57

Imposeren
От:
Зарегистрирован: 2009-04-06
Сообщения: 46
Репутация: +  1  -
Профиль   Отправить e-mail  

Django игнорирует {{ STATIC_URL }} в шаблоне

alexzander77
или РеквестКонтекст вместо просто Контекст ?
да-да-да. Проблема наверняка в этом.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version