четверг, 13 сентября 2012 г.

Django 1.4

Django 1.4 является новейшей версией фреймворка Django, написанного на языке программирования Python. Скачать Django Django 1.4 можно с официального сайта, расположенного по адресу: djangoproject.com/download/

Среди нововведений Django 1.4 особо выделяются:
- Поддержка запроса SELECT FOR UPDATE.
- Улучшеие хэширования паролей: теперь используется алгоритм PBKDF2 (или BCrypt), вместо старого SHA1.
- HTML5 доктайп в интерфейсе администратора.
- Сортировка сразу по нескольким столбцам в админке.
- Старый FormWizard из django.contrib.formtools.wizard был заменён на совершенно новый.
- reverse_lazy() — ленивая версия django.core.urlresolvers.reverse()
- Интернационализация для urlpatterns через i18n_patterns() упросит жизнь многоязычным сайтам.
- Поддержка *args и **kwargs в simple_tag, inclusion_tag и новом assignment_tag.
- Шаблонный фильтр truncatechars для обрезки строк до заданной длинны.
- Бэкэнд CachedStaticFilesStorage для кэширования статических файлов, превращающий css/style.css в что-то такое: css/style.314d22ab3153.css
- CSRF улучшения, добавляющие декоратор для ajax-запросов, защиту от PUT и
- Обновлён код manage.py
 

Django IDE

Django IDE. Для разработчки на Django используются следующие IDE:
- PyCharm,
- PyDev (Eclipse),
- Python Tools for Visual Studio,
- Vim,
- Emacs,
- Geany,
- IDLE,
- Komodo Edit,
- NetBeans,
- Notepad++,
- Sublime Text 2,
- Wing IDE. 

Django datetime

Django datetime позволяет задавать формат времени.

Пример Django datetime:

import datetime
now = datetime.datetime.now()

Если включена поддержка ременных зон, то Django использует объект datetime time-zone-aware:

import datetime
from django.utils.timezone import utc

now = datetime.datetime.utcnow().replace(tzinfo=utc)

Django Templates

Django Templates - система создания шаблонов в Django.

Язык шаблонов Django Templates необычайно прост в использовании. Он позволяет динамически подставлять данные из переменных Python в HTML-код шаблона.

Шаблон Django Templates представляет из себя обычный текстовый файл в формате HTML. Внутри HTML-кода размещаются переменные в особом формате записи, которые будут заменены на действительные значения из базы данных и особые тэги, управляющие логикой формирования итогового HTML-кода шаблона.

Пример простого шаблона Django Templates.

<html>
<head><title>Ordering notice</title></head>

<body>

<h1>Ordering notice</h1>

<p>Dear {{ person_name }},</p>

<p>Thanks for placing an order from {{ company }}. It's scheduled to
ship on {{ ship_date|date:"F j, Y" }}.</p>

<p>Here are the items you've ordered:</p>

<ul>
{% for item in item_list %}
    <li>{{ item }}</li>
{% endfor %}
</ul>

{% if ordered_warranty %}
    <p>Your warranty information will be included in the packaging.</p>
{% else %}
    <p>You didn't order a warranty, so you're on your own when
    the products inevitably stop working.</p>
{% endif %}

<p>Sincerely,<br />{{ company }}</p>

</body>
</html>

Django Models

Django models - модели Django является единственными и окончательными источником сведений о ваших данных. Они описывают поведение данных, которые вы храните, и содержат их основные поля. Как правило, каждая модель является представлением одной из таблиц базы данных.

Каждая модель - это класс, являющийся подклассом django.db.models.Model.
Каждый атрибут модели представляет отдельное поле базы данных.
С помощью моделей Django models фактически предоставляет вам автоматически-генерируемый API доступа к базе данных.

Пример Django models.

В данном примере определяется класс Person, содержащий поля first_name и last_name:

from django.db import models

class Person(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)

first_name и last_name являются полями нашей модели. Каждое поле определяет атрибут класса, а каждый атрибут в свою очередь представляет собой колонку базы данных.

Выше приведенный класс Person создаст таблицу базу данных примерно такого вида:

CREATE TABLE myapp_person (
    "id" serial NOT NULL PRIMARY KEY,
    "first_name" varchar(30) NOT NULL,
    "last_name" varchar(30) NOT NULL
);

Имя таблицы, myapp_person, автоматически получено из метаданных нашей модели, однакобыть задан оно может быть переопределено.
Поле id добавлено автоматически, но вы можете изменить это поведение.
В нашем примере используется синтаксис SQL, отвечающий PostgreSQL, однако, стоит отметить, что Django использует SQL с учетом базы данных, указанной в вашем файле настроек.

Использование моделей Django models.

Как только вы определили ваши модели, вы должны сообщить Django, что собираетесь использовать их. Делается это с помощью изменения вашего файла настроек, а именно редактирования INSTALLED_APPS, в который нужно добавить имя вашего модуля, содержащего models.py.

Например, если модели вашего приложения находятся в модуле mysite.myapp.models (данная структура создается после выполнения сценария manage.py startapp), нужная нам часть INSTALLED_APPS должна выглядеть так:

INSTALLED_APPS = (
    #...
    'mysite.myapp',
    #...
)

После редактирования INSTALLED_APPS не забудьте запустить сценарий syncdb.

Поля.

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

Например:

class Musician(models.Model):
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    instrument = models.CharField(max_length=100)

class Album(models.Model):
    artist = models.ForeignKey(Musician)
    name = models.CharField(max_length=100)
    release_date = models.DateField()
    num_stars = models.IntegerField() 

Типы полей.

Каждое поле вашей модели должно быть экземпляром соответствующего класса Field. Django использует типы класса Field для определения нескольких вещей:
- Тип колонки базы данных (например, INTEGER, VARCHAR).
- Виджет для использования интерфейса администратора в Django, если вы хотите его использовать (например, input type=«text»>).
- Минимальные требования к проверке, используемой в интерфейсе администратора Django и автоматически-генерируемых формах.

Django поставляется с десятками встроенных типов; вы можете посмотреть полный список в справке по полям моделей. Так же вы можете создавать собственные типы полей.

Параметры полей.

Каждое поле имеет определенный набор характерных аргументов, документированных в справке по полям моделей. Например, CharField (и его подклассы) требует аргумент max_length, который определяет размер поля базы данных VARCHAR, используемый для хранения ваших данных.

Существует также набор общих аргументов, которые доступны для всех типов полей. Все они являются необязательными.

Установка Django

Установка Django начинается с выполнения следующих действий.

Для начала необходимо скачать и установить язык программирования Python.

Далее вам необходимо скачать дистрибутив Django с Официального сайта, расположенного по адресу djangoproject.com/download/

Теперь вы готовы к установке Django на Windows.

1. Откройте консоль командной строки, перейдя по пунктам

Пуск > Все программы > Стандартные > Командная строка




2. Перейдите в папку "django", набрав в консоли

cd C:\django\

и нажав Enter.



3. Введите в консоли

django-admin.py startproject mysite

и нажмите Enter для создания структуры сайта в папке mysite.



4. Перейдите в папку "mysite", набрав в консоли

cd mysite

и нажав Enter.



5. Запустите сервер для проверки, набрав в консоли

manage.py runserver

и нажав Enter.





6. Откройте браузер и перейдите по адресу

http://127.0.0.1:8000/

Если все сработало правильно, то вы увидите на странице следующее сообщение:



7. Чтобы выключить сервер, находясь в консоли командной строки нажмите сочетание клавиш Ctrl + C.

Поздравлем. Установка Django на ваш компьютер завершилась успешно.



Django admin

Django admin является одной из мощнейших частей фрейморка Django. Она считывает метаданные из моделей для предоставления готового интерфейса по управлению данными на вашем сайте.

Для того, чтобы активировать интерфейс администрирования Django admin необходимо выполнить следующие 7 шагов:

1. Добавьте 'django.contrib.admin' в раздел INSTALLED_APPS файла setting.py.

2. Убедитесь, что django.contrib.auth, django.contrib.contenttypes, django.contrib.messages и django.contrib.sessions находятся в разделе INSTALLED_APPS файла setting.py. Если они отсутствуют в списке INSTALLED_APPS, то добавьте их в него.

3. Добавьте django.contrib.messages.context_processors.messages в раздел TEMPLATE_CONTEXT_PROCESSORS и MessageMiddleware в раздел MIDDLEWARE_CLASSES. (Они активны по умолчанию, поэтому вам необходимо добавить их, если ранее вы их удалили.)

4. Определите какая из моделей ваших приложений будет редактироваться через панель администрирования Django admin.
  
5. Для каждой модели создайте класс ModelAdmin, который инкаспулирует администраторские функции и опции.

6. Инициализируйте AdminSite и сообщите ему о каждой модели и классе ModelAdmin.

7. Пропишите местоположение AdminSite в URLconf.

После выполения данных шагов вы будете готовы использовать Django admin при переходе по URL, который вы прописали в пункте 7. По умолчанию это /admin/