|
Cetus Group
Информационные системы и программное обеспечение
Меню
Файлы проекта
Поддержка
E-mail:
cetus@ukr.net
|
Применение Python для Web - cистема управления контентом Django
Редакция 06.12.2006 : изменения 11.11.2007
А.Г. © Часть 3 - "Толстый клиент на базе CMS Django"
Система управления контентом Django предоставляет интересные
возможности по работе с базами данных, которые могут быть использованы как при разработке Веб-приложений,
так и программ с графическим интерфейсом пользователя. Синтез CMS с одной из GUI-библиотек для реализации
"толстых" клиентов позволит использовать технологии и решения, реализованные в CMS:
В качестве примера рассмотрим реализацию толстого клиента средствами Django (версия 0.96) (используем объектно-ориентированный интерфейс Django по работе с базой данных) и GUI библиотеки Qt (Qt3). Для начала средствами Django создадим проект 'djqt1' и приложение 'polls' как показано в документации к Django: django-admin.py startproject djqt1 cd djqt1 && ./manage.py startapp polls Сформируем модель 'Poll' приложения 'polls' (в файле polls/models.py):
from django.db import models
# Create your models here.
class Poll(models.Model):
question = models.CharField(maxlength=200)
pub_date = models.DateTimeField('date published')
Установим значения указанных ниже переменных в файле settings.py проекта:
DATABASE_ENGINE = 'mysql' # 'postgresql', 'mysql', 'sqlite3' or 'ado_mssql'.
DATABASE_NAME = 'djangodb' # Or path to database file if using sqlite3.
DATABASE_USER = 'cetus' # Not used with sqlite3.
ROOT_URLCONF = 'djqt1.urls'
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'djqt1.polls',
)
Создадим базу данных, сгенерируем ее структуру и проверим работоспособность модели из командной строки python. Для этого установим переменную окружения 'DJANGO_SETTINGS_MODULE' и выполним следующее: export DJANGO_SETTINGS_MODULE=settings echo "create database djangodb" | mysql ./manage.py syncdb polls python >>> from poll.models import Poll >>> from datetime import datetime >>> p = Poll(0,"Example question",datetime.now()); >>> print p.question >>>Example question Теперь перейдем к Qt и ее связке с Django. Для этого создадим форму и сгенерируем для нее код python как было показано в примерах "Создание приложения с использованием программы 'designer'" и "Реализация обработчиков событий". В производном от формы классе для доступа к данным используем интерфейс Django (код Django отмечен ###-комметариями):
# -*- coding: utf-8 -*-
from form1 import *
from datetime import datetime
###импортируем описание модели 'Poll'
from polls.models import Poll
class Form1Impl(Form1):
def __init__(self):
Form1.__init__(self)
self.connect(self.pushButton,SIGNAL("pressed()"),self.SlotInsert)
self.Select()
def Select(self):
###выбираем 'Poll'-объекты из БД
p = Poll.objects.all()
self.table.setNumRows(len(p))
for i in range(len(p)):
self.table.setText(i,0,p[i].question)
self.table.setText(i,1,str(p[i].pub_date))
def SlotInsert(self):
###создаем новый 'Poll'-объект
p = Poll(0,question=self.lineEditName.text(),pub_date=datetime.now())
### и сохраняем его в БД
p.save()
self.Select()
На этом все. Простота данного примера подтверждает высокое качество идей, положенных в основу CMS Django. |