среда, 16 июля 2008 г.

Описание Inclusion tags

С помощью 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 %}

понедельник, 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 %} # Используем свой зарегистрированный шаблонный тег

---------------------------------
---------------------------------

вторник, 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.

среда, 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

четверг, 22 мая 2008 г.

Установка mod_wsgi на Debian

Установку модуля mod_wsgi я буду проводить на ос debian etch.

Качаем последнюю версию 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.

вторник, 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'