Показаны сообщения с ярлыком sqlite. Показать все сообщения
Показаны сообщения с ярлыком sqlite. Показать все сообщения

суббота, 14 февраля 2009 г.

django: первый бой

Для своих целей мне понадобилось небольшое веб-приложение для хранения данных о клиентах и проектах, которые я для них выполнял или выполняю. Задачи приложения примерно такие: ведение базы данных клиентов (название, телефон, эл. ящик, адрес) и проектов (заказчик, название проекта, начало работы над проектом, конец работы над проектом, цена).

При этом я давно хотел начать использовать python, django и sqlite в своих приложениях, поэтому решил начать с этого приложения, потому как оно мне нужно.

Проект создан и работа с БД настроена, теперь создаём само приложение:

python manage.py startapp clients

Затем описываем две необходимых нам модели для клиента и проекта в файле models.py


 1 # -*- coding: utf-8 -*-
2
3 from django.db import models
4
5 class Client(models.Model):
6 """Модель клиента, делающего заказ"""
7 name = models.CharField(max_length = 200)
8 phone = models.CharField(max_length = 50)
9 address = models.CharField(max_length = 200)
10 email = models.CharField(max_length = 100)
11
12 def __unicode__(self):
13 return self.name
14
15 class Project(models.Model):
16 """Проект или услуга, заказываемая клиентом"""
17 client = models.ForeignKey(Client)
18 name = models.CharField(max_length = 200)
19 begDate = models.DateTimeField('Дата начала разработки проекта')
20 endDate = models.DateTimeField('Дата окончания разработки проекта')
21 price = models.CharField(max_length = 50)
22
23 def __unicode__(self):
24 return self.name


После редактируем файл admin.py таким образом, чтобы можно было управлять записями из админки


 1 # -*- coding: utf-8 -*-
2
3 from crm.clients.models import Client
4 from crm.clients.models import Project
5 from django.contrib import admin
6
7 class ClientAdmin(admin.ModelAdmin):
8 list_display = ['name', 'address', 'phone', 'email']
9
10 admin.site.register(Client, ClientAdmin)
11
12
13 class ProjectAdmin(admin.ModelAdmin):
14 list_display = ['client', 'name', 'begDate', 'endDate', 'price']
15
16 admin.site.register(Project, ProjectAdmin)


Теперь осталось запустить команду синхронизации с БД:

python manage.py syncdb

Приложение готово, но оно помимо нужных мне функций предлагает ещё и управлять теми разделами, которые мне не нужны, поэтому создадим нового пользователя и разрешим ему управлять только клиентами и проектами. Веб-приложение с нужными функциями готово.

На сегодняшний день, django для меня самый лучший инструмент для быстрого создания веб-приложений.

понедельник, 19 января 2009 г.

debian, sqlite, python2.6 и пляски с бубном

Настал тот день, когда я решил использовать linux для разработки под веб в качестве рабочей системы. В качестве инструментов разработчика выбрал: python2.6, sqlite, django.

Критерии выбора

python2.6 выбрал по той причине, что в этой версии поддерживаются абстрактные классы (чего нет в 2.5), но при этом он не является сыроватым (как 3.0).
sqlite. Я отдаю себе отчёт, что самая популярная СУБД в вебе это mysql, и использование mysql проще всего, так как можно без проблем найти хостинг. Но я взялся за питон для работы над своими экспериментальными проектами, в которых я решаю, что и как использовать. sqlite же - это очень легковесная СУБД, возможностей которой мне вполне хватает для хранения данных. Тут рассказывается о применении python и sqlite для разработки довольно немаленького проекта. Так что применение этой СУБД для меня вполне подходящее решение.


Настройка
Debian 4.o скачан и установлен на ноутбук.
Далее по пунктам:
  1. устанавливаем gcc
    #apt-get install gcc
  2. устанавливаем libc6
    #apt-get install libc6-dev.
    Без этой библиотеки компиляция будет выдавать ошибки.
  3. распаковываем последнюю версию sqlite и запускаем команды:
    ./configure
    make
    make install
  4. распаковываем python2.6 и:
    ./configure
    make
    make install
Устанавливать новую версию sqlite обязательно - имеющая в дистрибутиве версия не подхватывается питоном версии 2.6 (хотя в 2.5 успешно импортируется).
Вот собственно и всё, далее запускаем питон и проверяем наличие sqlite:
#python
>>>import sqlite3
>>>
Если ошибок нет, то можно работать дальше.