Создание Django проекта с нуля

Материал из support.qbpro.ru
...самая острая память - тупой карандаш.

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 краткая справка по помощи

Программное обеспечение для разработки

Настройка и пробный запуск Django проекта

Для справки

 Использование Django с PostgreSQL
 Новый проект
 Запуск сервера разработки
 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 из 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 в Питоне

  1. лучше использовать тарболл..
  2. после распаковки тарболла сделать под правами админа python setup.py install
  3. в каталоге /usr/lib/python2.6/dist-packages/ создать файл django.pth и в нем указать путь проекта /home/user/portal/
  4. под пользователем даем команду создания проекта django.admin.py startproject portal
  5. в каталоге проекта (/home/user/portal) для импорта нашего шаблона в urls.py пишем послe первой строки: from portal.views import hello (наша функция hello) и ниже после комментариев ее описываем для вызова через строку в браузере: ('hello/$', hello),
  6. в каталоге проекта создаем наш шаблон views.py и в нем соблюдая правильно расстановки и переносы пишем нашу программу с функцией hello