среда, 1 декабря 2010 г.

Django, заметки после использования

Давненько я не писал. Набирался практических умений. Думаю пришла пора поделиться некоторыми заметками по использованию Django


Думаю, что лучше всего будет изложить всё в тезисном виде. Вопрос, ответ. Правда уже не знаю как получится с 1ым пунктом.

 В. Начинается новый проект, на что следует заострить внимание?
 О. Думаю здесь не обойтись лишь несколькими рекомендациями, но последний раз я взял за правило следующее:
  1. Необходимо договориться об используемом инструментарии ( В Django версии 1.2.3, settings.py отличается от старых версий)
  2. Название БД проекта должна соответствовать названию проекта (это поможет если будет идти параллельно несколько задач).
  3. Основной пользователь БД должен иметь имя БД. (это упростит синхронизацию settings.py).
 В. Проект получен из репозитория, но как его запустить?
 О. Если выполнены пожелания из предыдущего вопроса то проблем быть не должно.
Выполняются следующие действия:
  1. Необходимо создать локальную БД и завести пользователя, здесь описано как это можно сделать в MySql.
    1. Создание пользователя для БД:
      1. > mysql --user=root mysql
      2. mysql> CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass';
      3. mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost' WITH GRANT OPTION;
    2. Создание БД и назначение прав пользователю на БД:
      1. mysql> CREATE DATABASE mysite;
      2. mysql> GRANT ALL ON mysite.* TO 'monty'@'localhost';
  2. Проверить подключение к БД:
    1. python manage.py shell
    2. >>> from django.db import connection
    3. >>> cursor = connection.cursor()
    4. Если нет ошибок то всё ОК, иначе у нас проблемы и придётся править settings.py
  3. Проверить корректность Модели с помощью команды
    1. python manage.py validate (выполненой в каталоге проекта)
  4. (не обязательный шаг) Сгенерировать скрипты по созданию таблицы, что бы посмотреть что получается
    1. python manage.py sqlall projectname >> name.sql
    2. просмотреть созданный файл name.sql
  5. Создать таблиц в БД:
    1. python manage.py syncdb
  6. Запустить тестовый сервер
    1. python manage.py runserver
  7. Проверить работоспособность
    1. в строке адресса браузера набрать http://127.0.0.1:8000/
 В. Как отображать статичные данные в Django?
 О. Проблема в том что Django не умеет показывать статичные ресурсы. Что-бы появилась возможность их отображать, ресурсы необходимо разместить в сети.
  1. Нужно добавить в файле setups.py строку, MEDIA_ROOT = 'путь до каталога с статичными данными'
  2. В файле urls.py необходимо дописать следующее:
    1. импортировать библиотеку, from django.conf import settings
    2. в кортеж адресов проекта добавить строку вида: (r'^url путь до медии/(?P.*)$', 'django.views.static.serve',  {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}),
После этого, набрав в браузере адрес путь до медии/, вы увидете все файлы и каталоги расположенные в директории 'путь до каталога с статичными данными'

В. Как сделать не обязательные поля в БД?
О. Для того что бы разрешить не обязательные поля, в моделе необходимо добавить следующее:
  1. Название поля = models.URLField(blank=True) - поле необязательно для заполнения, а в БД будет храниться как пустая строка
  2. Название поля = models.URLField(blank=True, null=True) - поле необязательно для заполнения, а если поле будет пустым то в БД будет храниться null
В. Как, обратиться к одному объекту по связке ManyToMany?
О. Если нужно обратиться к одному объекту из связки Много-Ко-Многим сделать можно так:
object.manyToManyField.all.0.FieldLinkedTable где 0 - номер элемент который нужно получить.

В. Как реализовать кнопку "Назад", что бы возвращаться обратно по истории?
О. Используется JavaScripts  <a href="javascript:history.go(-1)">НАЗАД</a>


Вот кажется и всё. Получилось суховато. Но ведь здесь требуется найти ответ на интересующий вопрос, а не повеселиться.

Комментариев нет:

Отправить комментарий