Django – среда обитания. Часть 6 – Первое приложение

djangoВ этой части статьи я расскажу о  процессе создания простейшего Django – приложения в том окружении, настройка которого описывалась до этого.

Цель приложения одна – показать, что все работает.

Я не буду рассказывать подробно, что и для чего делается, а просто последовательно опишу всю проделанную работу.

Итак, начнем…

Для начала – проверьте в броузере, по имени вашего сайта (у меня это wsgi.mysite.ss) – должно открываться стандартное приветствие Django.

Затем, откройте терминал с помощью программы PuTTy. После авторизации выполните следующие команды:

$ ls
$ cd django-projects/mysite_ss/mysite/
$ ls

На экране отобразится содержание папки «/mysite/», в том виде как мы ее оставили в 3-й части.

рис.1. Состояние папки проекта

рис.1. Состояние папки проекта

Если все так, то продолжим…

Создадим первое приложение, назовем его «blog» (по примеру из книги «Django Разработка веб-приложений на Python», авторы – Д. Форсье, П. Биссекс, У. Чен; с небольшими исправлениями связанными со средой проекта)

S python manage.py startapp blog

Если система ответила просто выводом следующего приглашения для ввода, то все нормально – приложение «blog», успешно создано. Проверим это

$ ls
$ cd blog/
$ ls

рис.2. Папка blog

рис.2. Папка blog

Теперь, сделаем одну вещь, делать которую вам придется всегда (с имеющимися настройками samba) после создания каких-либо файлов в терминале, если вы их хотите редактировать с другого компьютера через наш «расшаренный» в части 3 ресурс «django-projects»:

$ cd ~
$ sudo chmod 0777 -R django-projects/

С помощью последней команды мы получим полный доступ к папке «django-projects/».

Затем подправим файл hosts:

$ sudo nano /etc/hosts

Надо добавить строку, в моем случае это:

10.10.10.43   wsgi.mysite.ss

рис.3. Файл hosts

рис.3. Файл hosts

Сохраняем («Ctrl+o»), выходим («Ctrl+x»)

Теперь пришло время рассказать о программе текстового редактора, который я буду использовать далее. Я попробовал несколько. Каждый имел свои плюсы и минусы. Пока остановился на программе «UliPad». Он имеет:

  • Настраиваемую подсветку синтаксиса.
  • Нумерацию строк.
  • Распознаваемый «Питоновский» авто отступ (т.е. после набора «:»).
  • И самое главное – возможность выбора кодировки символов не только по видам самой кодировки, но и по виду ОС. Обращаю на это особое внимание – кодировка должна быть не просто «UTF-8», а «Unix UTF-8» (код окончания строки «\n»).  Контролировать текущую кодировку файла можно в правом нижнем углу окна на панели «состояния». Менять в меню «Document ->Convert Line Ending» и «Document -> Change Encoding».

Из замеченных минусов:

  • На мой вкус, немного медленная загрузка.
  • Нет никакого авто дополнения для Django (это же просто редактор :) ).
  • И наоборот – иногда ненужное навязчивое авто дополнение некоторых конструкций языка.

Скачать его можно с

http://code.google.com/p/ulipad/downloads/list

Я взял файл «ulipad.4.0.py25.exe», версию для Windows.

Установка прошла без сюрпризов, поставил в папку по умолчанию.

Запустите его, затем откройте файл «setting.py», который у меня находится на Windows-компьютере в ресурсах сети  по адресу «\\UB43\django-projects\mysite_ss\mysite».

В нем я заменил (далее – номер строки и ее состояние после замены):

7. ('evg', 'e.s.burdin@ya.ru'),
12. DATABASE_ENGINE = 'postgresql_psycopg2'
13. DATABASE_NAME = 'djangodb'
14. DATABASE_USER = 'postgres'
15. DATABASE_PASSWORD = '0'
16. DATABASE_HOST = '10.10.10.43'
17. DATABASE_PORT = '5432'

рис.4. Файл setting.py

рис.4. Файл setting.py

Далее …

48. ADMIN_MEDIA_PREFIX = '/media_admin/'

рис.5. Файл setting.py

рис.5. Файл setting.py

Далее добавил после строки 77:

78. 'django.contrib.admin',

И после строки 82

83. 'blog',

рис.6. Файл setting.py

рис.6. Файл setting.py

Сохраним результат нажав «Ctrl+S».

Теперь откроем файл «urls.py» из этой же папки:

рис.7. Файл urls.py

рис.7. Файл urls.py

В нем сделаем:

4. from django.contrib import admin
5. admin.autodiscover()
16. (r'^admin/', include(admin.site.urls)),
17. url(r'^blog/', include('blog.urls')),

рис.8. Файл urls.py

рис.8. Файл urls.py

Сохраним результат.

Далее откроем файл «models.py» из папки «\\UB43\django-projects\mysite_ss\mysite\blog»

рис.9. Файл models.py

рис.9. Файл models.py

Добавим в него следующий код:

from django.contrib import admin
class BlogPost(models.Model):
    title = models.CharField(max_length=150)
    body = models.TextField()
    timestamp = models.DateTimeField()
    def __unicode__(self):
        return u'%s %s' % (self.title, self.timestamp)
class BlogPostAdmin(admin.ModelAdmin):
    list_display = ('title','timestamp')
admin.site.register(BlogPost, BlogPostAdmin)

рис.10. Файл models.py

рис.10. Файл models.py

Сохраним результат.

Затем в этой- же папке «\\UB43\django-projects\mysite_ss\mysite\blog» создадим файл «urls.py» со следующим кодом:

from django.conf.urls.defaults import *
from blog.views import archive
urlpatterns = patterns('',
    url(r'^$',archive),
)

рис.11. Файл blog/urls.py

рис.11. Файл blog/urls.py

Сохраним его.

Далее откроем файл «views.py», все из той-же папки «\\UB43\django-projects\mysite_ss\mysite\blog»

И добавим в него следующее:

from django.template import loader, Context
from django.http import HttpResponse
from blog.models import BlogPost
def archive(request):
    posts = BlogPost.objects.all()
    t = loader.get_template("archive.html")
    c = Context({ 'posts': posts })
    return HttpResponse(t.render(c))

рис.12. Файл views.py

рис.12. Файл views.py

Сохраним файл.

Затем в папке «\\UB43\django-projects\mysite_ss\mysite\blog» создайте папку «templates».

В этой папке создайте файл «archive.html» со следующим содержимым:

{% for post in posts %}
<h2>{{ post.title }}</h2>
<p>{{ post.timestamp }}</p>
<p>{{ post.body }}</p>
{% endfor %}

рис.13. Файл archive.html

рис.13. Файл archive.html

Все готово для создания таблиц и запуска первого приложения. Осталось только создать БД PostgreSQL, Django пока этого не умеет.

Итак, запустим из Windows программу «pgAdmin III». В предыдущей части мы уже создали соединение с сервером 10.10.10.43 (в моем случае), оно сейчас помечено красным крестиком. Щелкните на нем мышкой – произойдет подключение к серверу.

рис.14. pgAdmin

рис.14. pgAdmin - подключенный сервер

Встаньте курсором мышки на ветку «Базы», нажмите правую кнопку мышки и выберите в меню «Новая база данных…». Затем я заполнил 2 поля:

Имя = djangodb (мы именно это указали в файле «setting.py»)

Владелец = postgres

рис.15. Параметры БД

рис.15. Параметры БД

Нажимаем «ок» – база данных создана. Щелкнув по ней мышкой, я так понял, мы произведем какую-то инициализацию. После этого она доступна для нашего использования из Django приложения.

Программу «pgAdmin» можно закрыть.

Итак, откроем PuTTy-терминал, и выполним следующие команды:

$ cd ~
$ cd django-projects/mysite_ss/mysite/
$ python manage.py syncdb

Начнется процесс создание БД согласно нашей модели.

Прервется он вопросом о создании Django-superusera, отвечаем «yes», затем я ввел «evg», свой e-mail, и 2 раза пароль. Эти данные будут использоваться для входа в «админку».

рис.16. Создание таблиц Django приложения

рис.16. Создание таблиц Django приложения

Перезапустим сервер Apache

$ sudo /etc/init.d/apache2 restart

рис.17. Перезагрузка сервера Apache

рис.17. Перезагрузка сервера Apache

Для того, чтобы можно было обращаться к сайту не только по IP добавьте в файл «hosts» находящийся в папке «C:\Windows\System32\drivers\etc» следующую строку:

10.10.10.43 wsgi.mysite.ss

Затем запускаем броузер, и в адресной вводим «wsgi.mysite.ss/admin».

Если вы сделали все в точности как я описывал – у вас появится окно приглашение для входа в административный интерфейс нашего Django приложения. Тут надо ввести ваш логин и пароль, созданный на предыдущем шаге. У меня это «evg» и «0».

рис.18. Вход в адм. интерфейс Django

рис.18. Вход в адм. интерфейс Django

рис.19. Адм. интерфейс

рис.19. Адм. интерфейс

Далее щелкните на ссылке «Add» справа от слов «Blog posts». Откроется окно для добавления записи в таблицу «BlogPosts»

рис.20. Добавление записи

рис.20. Добавление записи

После заполнения полей «Title», «Body», «Date» и «Time» нажмите на кнопку «Save and add another» при этом произойдет сохранение первой записи, и предложение на ввод следующей. Проделайте эту операцию несколько раз, как решите закончить, просто нажмите кнопку «Save». Я добавил еще 2 записи.

После нажатия кнопки «Save» перед нами экран со списком всех записей таблицы.

рис.21. Таблица BlogPost

рис.21. Таблица BlogPost

Теперь в адресной строке можно набрать   «wsgi.mysite.ss/blog» и любоваться результатом:

рис.22. Первый Django-сайт

рис.22. Первый Django-сайт

Дальше вы сами сможете дополнять это простое приложение другим функционалом, используя в качестве руководства либо вышеупомянутую книгу, либо переведенную документацию к Django по адресу http://djbook.ru/. Так же множество примеров можно найти в сети.

Все файлы этого проекта лежат здесь.

Еще раз хочу заострить внимание на редакторах. Проверяйте кодировку – она должна быть такая, как я упоминал в начале этой части статьи. Я несколько раз получал ошибку именно из-за того, что в файл попадали лишние символы, или наоборот исчезали нужные.

На этом я уже хотел завершить цикл статей под общим заголовком «Django – среда обитания». В первоначальном варианте, эта часть – была последней. И она даже успела в таком виде пролежать на сайте несколько часов. Но я вовремя вспомнил о том, что без рассказа о настройке окружения в Windows, статья будет выглядеть незавершенной. Я сам постоянно с этим сталкиваюсь, читая очередной «мануал» в сети. Поэтому будет продолжение.

В следующей части рассмотрим установку Python и Django в Windows.

Размещено в Django, PostgreSQL, Ubuntu · Метки: , , , , ,

Комментарии

Есть 6 коммент. к “Django – среда обитания. Часть 6 – Первое приложение”
  1. igor-tm:

    вот как раз собрался вникать почему пример с вышеуказанной книжки не работает… а тут уже всё подправлено. ну просто супер!!!

    спасибо

  2. admin:

    Рад, что помог. Но разбираться – все равно придется :) Там в файлах убран, иногда не нужный префикс «mysite.»; исправлен согласно новой Djang’e файл urls.py для админки в корне, и в models.py добавлено представление объекта в формате unicode ( def __unicode__(self): )

  3. mitka:

    бодрого времени суток, у меня возникли трудности в процессе выполнения команды manage.py syncdb

  4. onlyfreedigits:

    единственное, мне еще надо было добавить
    'django.contrib.admin',
    в секцию INSTALLED_APPS

    После этого надо обязательно вызвать
    python manage.py syncdb

    ну и еще я апачу перегрузил (на всяк случай)

Поделитесь своим мнением