Создание Django проекта с нуля
- ...самая острая память - тупой карандаш.
1. Оснастка сервера
Необходимые пакеты
- База данных
postgresql postgresql-8.4 postgresql-client postgresql-client-8.4 postgresql-client-common postgresql-common postgresql-contrib postgresql-contrib-8.4 postgresql-doc postgresql-doc-8.4
- Фреймворк Django
python-django python-django-doc python-anyjson
- Доступ к PostgreSQL из Python
python-psycopg2
- Модуль для обработки JSON
python-simplejson
- Дополнения к Django
django-ajax-selects django-filter django-tables
- Библиотеки JS (пока не знаю как они используются, и вообще используются ли)
libjs-jquery libjs-jquery-cookie libjs-jquery-easing libjs-jquery-event-drag libjs-jquery-event-drop libjs-jquery-fancybox libjs-jquery-form libjs-jquery-galleriffic libjs-jquery-history libjs-jquery-jfeed libjs-jquery-jush libjs-jquery-livequery libjs-jquery-meiomask libjs-jquery-metadata libjs-jquery-mousewheel libjs-jquery-opacityrollover libjs-jquery-tablesorter libjs-jquery-tipsy libjs-jquery-treetable libjs-jquery-ui libjs-jquery-ui-docs libjs-json
- Веб сервер
apache2 apache2-mpm-prefork apache2-utils apache2.2-bin apache2.2-common
На заметку: мой сорс лист полный бэкап моих пакетов dpkg --get-selections >myselections - создать бэкап dpkg --set-selections <myselections - загрузить бэкап
Настройка БД PostgreSQL
Оригинал статьи, но всякое бывает, поэтому продублирую.
Устанавливаем phpPgAdmin:
#apt-get install phppgadmin
Системный пользователь БД в PostgreSQL называется postgres. Установим ему пароль следующей командой:
#passwd postgres
Присваиваем пароль супепользователю БД (postgres):
#su postgres -c psql postgres psql (8.4.7) Type "help" for help.
postgres=# postgres=# ALTER USER postgres WITH PASSWORD '[PASS]';
[PASS] - пароль пользователя postgres
Выходим:
postgres=# \q
Открваем конфиг:
#nano /etc/postgresql/8.4/main/postgresql.conf
В секции CONNECTIONS AND AUTHENTICATION раскоментируем следующие строки:
listen_addresses = 'localhost' password_encryption = on
Открываем pg_hba.conf
#gedit /etc/postgresql/8.4/main/pg_hba.conf
и дописываем в конец:
host all all 192.168.1.2 255.255.255.0 md5
Перезапускаем сервер:
#/etc/init.d/postgresql restart
Cоздаем нового пользователя ‘pgadmin’ с правами администратора:
#sudo -u postgres createuser pgadmin
Задаем пароль пользователю ‘pgadmin’:
#sudo su postgres -c psql postgres postgres=# ALTER USER pgadmin WITH PASSWORD '123456'; postgres=# \q
Заходим на страницу http://localhost/phppgadmin/ и переходим в Servers - PostgreSQL. Указываем 'Имя пользователя' (pgadmin) и 'Пароль' и попадаем в БД.
В качестве боевой помощи PostgreSQL краткая справка по помощи
Программное обеспечение для разработки
- Eclipse IDE for JavaScript Web Developers в сочетании с надстройкой Pydev
- Инструкция по настройке Pydev
- Любимый "блокнот" geany - лучший инструмент для оперирования Jquery, Jquery UI и всего где много вложенных скобок, кавычек и т.д.
- kompozer - лучший визуальный редактор HTML
- Google Chrome + магическое сочетание Ctrl+Shift+j
- Mozilla fireFox + надстройка Web Developer
Настройка и пробный запуск Django проекта
Для справки
Использование Django с PostgreSQL Новый проект Запуск сервера разработки
- В Eclipse создать новый Django проект
- В файле models.py создать модель (описание таблицы БД) Описание полей таблиц, eng.
from django.db import models
class ok16(models.Model):
id= models.AutoField(primary_key=True)
kod=models.CharField(max_length=5)
kch=models.CharField(max_length=1)
profname=models.CharField(max_length=255)
etks=models.CharField(max_length=2)
okz=models.CharField(max_length=4)
def _unicode_(self):
return self.profname
class Meta:
ordering = ['profname']
- Внимательно прочитать главу
- Настройка БД
- Установка модели - очень часто используется, особенно вначале пути.
- В папке с проектом создать текстовый файл ok1.csv. Расширение не важно, суть в содержимом.
Содержимое файла ok1.csv из wiki копировать в режиме редактирования, иначе формат не сохранится
- В той же папке в Eclipse создать файл import_csv.py. Прямое копирование данных из файла в БД (2 недели разбирался). В БД spravochnik_siz создать таблицу ok16
Пока без комментов, сори.
import psycopg2
import sys
import csv
from string import *
def main():
csv_file_name= 'ok1.csv'
conn_string = "host='localhost' dbname='spravochnik_siz' user='pgadmin' password='000000'"
print "Connecting to database\n ->%s" % (conn_string)
try:
conn = psycopg2.connect(conn_string)
cursor = conn.cursor()
#records = cursor.fetchall()
#pprint.pprint(records)
except:
exceptionType, exceptionValue, exceptionTraceback = sys.exc_info()
sys.exit("Database connection failed!\n ->%s" % (exceptionValue))
input_file=csv.reader(open(csv_file_name,'rb'), delimiter='#')
##########добавление
cursor.execute("SELECT * FROM spravochnik_siz_ok16")
ttemp=cursor.fetchall()
siz_name_id = len(ttemp)+1
call_zap_vsego=0
call_zap=0
for row in input_file:
data1 = {'id':str(siz_name_id), 'kod':row[0], 'kch':row[1], 'profname':row[2], 'etks':row[3],'okz':row[4]}
call_zap_vsego=call_zap_vsego+1
try:
cursor.execute("""INSERT INTO spravochnik_siz_ok16 VALUES (%(id)s, %(kod)s,%(kch)s, %(profname)s, %(etks)s, %(okz)s);""", data1)
siz_name_id = siz_name_id+1
print (row[2])
conn.commit()
call_zap=call_zap+1
except:
print ("error-",row[0])
exceptionType, exceptionValue, exceptionTraceback = sys.exc_info()
sys.exit("Database connection failed!\n ->%s" % (exceptionValue))
print "calichestvo dobavlennih zapisej=",call_zap
print "vsego zapisej=",call_zap_vsego
print "-------------------------------"
cursor.close()
conn.close()
sys.exit()
if __name__ == "__main__":
sys.exit(main())
Содержимое файла import_csv.py из wiki копировать в режиме редактирования, иначе формат не сохранится.
Настройка Apache
Ручная настройка проекта Django в Питоне
- лучше использовать тарболл..
- после распаковки тарболла сделать под правами админа python setup.py install
- в каталоге /usr/lib/python2.6/dist-packages/ создать файл django.pth и в нем указать путь проекта /home/user/portal/
- под пользователем даем команду создания проекта django.admin.py startproject portal
- в каталоге проекта (/home/user/portal) для импорта нашего шаблона в urls.py пишем послe первой строки: from portal.views import hello (наша функция hello) и ниже после комментариев ее описываем для вызова через строку в браузере: ('hello/$', hello),
- в каталоге проекта создаем наш шаблон views.py и в нем соблюдая правильно расстановки и переносы пишем нашу программу с функцией hello