С помощью Inclusion tags можно выводить одни и те же данные на каждой странице вашего сайта, например в сайдбаре вывести список пользователей. С помощью simple tags такое сделать весьма сложно, мне лично не удалось.
Inclusion tags очень похожи на simple tags.
# templatetags/give_me_users.py
from django import template
from accounts.models import User
register = template.Library()
@register.inclusion_tag("show_users_list.html")
def show_users():
....users = User.objects.all()
....return {'users': users}
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Создаем файл show_users_list.html в каталоге темплейтов,
содержимое:
{% for user in users %}
....{{ user }}
{% endfor %}
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Теперь открываем какой-то свой шаблон, например base.html :)
и вставляем туда:
{% load give_me_users %} # подгружаем наш самопальный inclusion tag
{% show_users %}
среда, 16 июля 2008 г.
понедельник, 14 июля 2008 г.
Django. Шаблонные теги. Simple tags
Простой пример который покажет сам принцип работы простого шаблонного тега.
(simple tags)
Такие теги можно использовать только в самых-самых простых случаях, например
когда нужно вывести на всех страницах сайта число\дату\строку.
Структура:
my_app
......models.py
......views.py
......templatetags
.................__init__.py # Обязательно
.................get_name.py
---------------------------------
---------------------------------
В get_name.py пишем:
from django import template
register = template.Library()
register.simple_tag # регистрация шаблонного тега
def get_my_string():
....return "Hello, I am tag"
---------------------------------
---------------------------------
Теперь переходим к шаблону.
{% load get_name %} # Подгружаем шаблонные теги
{% get_my_string %} # Используем свой зарегистрированный шаблонный тег
---------------------------------
---------------------------------
(simple tags)
Такие теги можно использовать только в самых-самых простых случаях, например
когда нужно вывести на всех страницах сайта число\дату\строку.
Структура:
my_app
......models.py
......views.py
......templatetags
.................__init__.py # Обязательно
.................get_name.py
---------------------------------
---------------------------------
В get_name.py пишем:
from django import template
register = template.Library()
register.simple_tag # регистрация шаблонного тега
def get_my_string():
....return "Hello, I am tag"
---------------------------------
---------------------------------
Теперь переходим к шаблону.
{% load get_name %} # Подгружаем шаблонные теги
{% get_my_string %} # Используем свой зарегистрированный шаблонный тег
---------------------------------
---------------------------------
вторник, 1 июля 2008 г.
How to make models.py if you have old project 's database
python mysite/manage.py inspectdb > mysite/myapp/models.py
Before you must configure your settings.py.
Before you must configure your settings.py.
среда, 28 мая 2008 г.
Apache + mod_wsgi
myproject - имя моего Джанговского проекта.
django.wsgi - файл с настройками который должен быть размещен в каталоге вашего проекта, в моем случае в myproject.
-----------------------
AddDefaultCharset utf8
ServerAdmin admin@site.com
ServerName site.com
ServerAlias www.site.com
WSGIProcessGroup admin
WSGIDaemonProcess admin user=admin group=www-data threads=2 maximum-requests=1000
WSGIScriptAlias / /home/admin/www/vhosts/site.com/myproject/django.wsgi
Alias "/admin-media/" "/usr/lib/python2.4/site-packages/django/contrib/admin/media/"
SetHandler None
Alias "/media/" "/home/admin/www/vhosts/site.com/myproject/media/"
SetHandler None
LogLevel warn
CustomLog /home/admin/www/vhosts/site.com/logs/site.com.access.log combined
ErrorLog /home/admin/www/vhosts/site.com/logs/site.com.error.log
-----------------------
Содержимое файла: django.wsgi
import sys
import os
import os.path
sys.path.insert(0, os.path.dirname(__file__))
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
from django.core.handlers.wsgi import WSGIHandler
application = WSGIHandler()
--------------------
в settings.py: ROOT_URLCONF = 'urls'
--------------------
После правки settings.py и других Джанговских файлов перезагружайте апач :
в Debian:
/etc/init.d/apache2 reload
django.wsgi - файл с настройками который должен быть размещен в каталоге вашего проекта, в моем случае в myproject.
-----------------------
AddDefaultCharset utf8
ServerAdmin admin@site.com
ServerName site.com
ServerAlias www.site.com
WSGIProcessGroup admin
WSGIDaemonProcess admin user=admin group=www-data threads=2 maximum-requests=1000
WSGIScriptAlias / /home/admin/www/vhosts/site.com/myproject/django.wsgi
Alias "/admin-media/" "/usr/lib/python2.4/site-packages/django/contrib/admin/media/"
SetHandler None
Alias "/media/" "/home/admin/www/vhosts/site.com/myproject/media/"
SetHandler None
LogLevel warn
CustomLog /home/admin/www/vhosts/site.com/logs/site.com.access.log combined
ErrorLog /home/admin/www/vhosts/site.com/logs/site.com.error.log
-----------------------
Содержимое файла: django.wsgi
import sys
import os
import os.path
sys.path.insert(0, os.path.dirname(__file__))
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
from django.core.handlers.wsgi import WSGIHandler
application = WSGIHandler()
--------------------
в settings.py: ROOT_URLCONF = 'urls'
--------------------
После правки settings.py и других Джанговских файлов перезагружайте апач :
в Debian:
/etc/init.d/apache2 reload
четверг, 22 мая 2008 г.
Установка mod_wsgi на Debian
Установку модуля mod_wsgi я буду проводить на ос debian etch.
Качаем последнюю версию mod_wsgi отсюда.
Также обратите внимание на то какая версия Apache у вас установлена, так как для ветки 1.3 есть отдельно mod_wsgi-1.3.
Распаковывем
Теперь нам нужно установить некоторые пакеты, без которых мы не сможем провести компиляцию mod_wsgi.
Теперь откомпилируем и установим mod_wsgi
Если все прошло на ура тогда создадим следующий файл:
И добавим туда строку:
Теперь активируем модуль mod_wsgi и перезагружаем Apache
Все=)
Качаем последнюю версию mod_wsgi отсюда.
Также обратите внимание на то какая версия Apache у вас установлена, так как для ветки 1.3 есть отдельно mod_wsgi-1.3.
Распаковывем
tar -xzvf mod_wsgi-2.0.tar.gz
Теперь нам нужно установить некоторые пакеты, без которых мы не сможем провести компиляцию mod_wsgi.
aptitude update
aptitude install python-dev
aptitude install apache2-dev
aptitude install gcc
Теперь откомпилируем и установим mod_wsgi
cd mod_wsgi-2.0
./configure
make
make install
make clean
Если все прошло на ура тогда создадим следующий файл:
/etc/apache2/mods-available/mod_wsgi.load
И добавим туда строку:
LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so
Теперь активируем модуль mod_wsgi и перезагружаем Apache
a2enmod mod_wsgi
/etc/init.d/apache2 force-reload
Все=)
вторник, 13 мая 2008 г.
Выбор блокнота, IDE для Django
1) Eclipse - отличная среда разработки приложений, что бы подружить его с Django нужно установить pydev плагин. На Дебиане возникли проблeмы с установкой плагина, вина тому старый eclipse 3.1 в репозиториях. Конечно можно было установить еклипс ручками предварительно скачав его с eclipse.org, но мне было лень.
2) VIM - да, VIM это круто) правда чертовски не удобно когда все по дефолту, если вы хотите с удобством и в полном комфорте программировать на VIM тогда гуглите конфиги специально заточенные под него.
3) Kate - посмотрел, не понравилось, удалил. (Nano, mcedit, pico подойдут только для правки кода :) )
4) PyScripter - жаль что только под WINDOWS. PyScripter отличное IDE, мне очень понравилось, я увидел в нем простоту, быстроту, легкость, бесплатность и т.д.
Обязательно посмотрите.
Пока что мой выбор под WIN это PyScripter, для *nix - VIM.
2) VIM - да, VIM это круто) правда чертовски не удобно когда все по дефолту, если вы хотите с удобством и в полном комфорте программировать на VIM тогда гуглите конфиги специально заточенные под него.
3) Kate - посмотрел, не понравилось, удалил. (Nano, mcedit, pico подойдут только для правки кода :) )
4) PyScripter - жаль что только под WINDOWS. PyScripter отличное IDE, мне очень понравилось, я увидел в нем простоту, быстроту, легкость, бесплатность и т.д.
Обязательно посмотрите.
Пока что мой выбор под WIN это PyScripter, для *nix - VIM.
вторник, 6 мая 2008 г.
Проблемы с кодировкой в django
У меня возникли проблемы с кодировкой в django. Работаю с utf-8 кодировкой и вместо нормальных русских символов получаю "?????". В гугле нашелся ответ, решить данную проблему можно легко. Во первых нужно везде выставить utf-8 кодировку, в первую очередь в файле модели в первой строке пропишите : # -*- coding:utf-8 -*-
Дальше не забудьте в конце каждой модели прописать:
def __unicode__(self):
return u'%s %s' % ( self.blah, self.blahblah)
В settings.py - LANGUAGE_CODE = 'ru'
Дальше не забудьте в конце каждой модели прописать:
def __unicode__(self):
return u'%s %s' % ( self.blah, self.blahblah)
В settings.py - LANGUAGE_CODE = 'ru'
Подписаться на:
Сообщения (Atom)