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

Материал из support.qbpro.ru
Версия от 14:53, 4 августа 2013; imported>Supportadmin (Новая страница: «::::::: ...самая острая память - тупой карандаш. ==1. Оснастка сервера== ===Необходимые пакеты=== *…»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
...самая острая память - тупой карандаш.

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