Django – среда обитания. Часть 6 – Первое приложение
В этой части статьи я расскажу о процессе создания простейшего Django – приложения в том окружении, настройка которого описывалась до этого.
Цель приложения одна – показать, что все работает.
Я не буду рассказывать подробно, что и для чего делается, а просто последовательно опишу всю проделанную работу.
Итак, начнем…
Для начала – проверьте в броузере, по имени вашего сайта (у меня это wsgi.mysite.ss) – должно открываться стандартное приветствие Django.
Затем, откройте терминал с помощью программы PuTTy. После авторизации выполните следующие команды:
$ ls
$ cd django-projects/mysite_ss/mysite/
$ ls
На экране отобразится содержание папки «/mysite/», в том виде как мы ее оставили в 3-й части.
Если все так, то продолжим…
Создадим первое приложение, назовем его «blog» (по примеру из книги «Django Разработка веб-приложений на Python», авторы – Д. Форсье, П. Биссекс, У. Чен; с небольшими исправлениями связанными со средой проекта)
S python manage.py startapp blog
Если система ответила просто выводом следующего приглашения для ввода, то все нормально – приложение «blog», успешно создано. Проверим это
$ ls
$ cd blog/
$ ls
Теперь, сделаем одну вещь, делать которую вам придется всегда (с имеющимися настройками 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
Сохраняем («Ctrl+o»), выходим («Ctrl+x»)
Теперь пришло время рассказать о программе текстового редактора, который я буду использовать далее. Я попробовал несколько. Каждый имел свои плюсы и минусы. Пока остановился на программе «UliPad». Он имеет:
- Настраиваемую подсветку синтаксиса.
- Нумерацию строк.
- Распознаваемый «Питоновский» авто отступ (т.е. после набора «:»).
- И самое главное – возможность выбора кодировки символов не только по видам самой кодировки, но и по виду ОС. Обращаю на это особое внимание – кодировка должна быть не просто «UTF-8», а «Unix UTF-8» (код окончания строки «\n»). Контролировать текущую кодировку файла можно в правом нижнем углу окна на панели «состояния». Менять в меню «Document ->Convert Line Ending» и «Document -> Change Encoding».
Из замеченных минусов:
- На мой вкус, немного медленная загрузка.
- Нет никакого авто дополнения для Django (это же просто редактор :) ).
- И наоборот – иногда ненужное навязчивое авто дополнение некоторых конструкций языка.
Скачать его можно с
Я взял файл «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'
Далее …
48. ADMIN_MEDIA_PREFIX = '/media_admin/'
Далее добавил после строки 77:
78. 'django.contrib.admin',
И после строки 82
83. 'blog',
Сохраним результат нажав «Ctrl+S».
Теперь откроем файл «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')),
Сохраним результат.
Далее откроем файл «models.py» из папки «\\UB43\django-projects\mysite_ss\mysite\blog»
Добавим в него следующий код:
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)
Сохраним результат.
Затем в этой- же папке «\\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),
)
Сохраним его.
Далее откроем файл «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))
Сохраним файл.
Затем в папке «\\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 %}
Все готово для создания таблиц и запуска первого приложения. Осталось только создать БД PostgreSQL, Django пока этого не умеет.
Итак, запустим из Windows программу «pgAdmin III». В предыдущей части мы уже создали соединение с сервером 10.10.10.43 (в моем случае), оно сейчас помечено красным крестиком. Щелкните на нем мышкой – произойдет подключение к серверу.
Встаньте курсором мышки на ветку «Базы», нажмите правую кнопку мышки и выберите в меню «Новая база данных…». Затем я заполнил 2 поля:
Имя = djangodb (мы именно это указали в файле «setting.py»)
Владелец = postgres
Нажимаем «ок» – база данных создана. Щелкнув по ней мышкой, я так понял, мы произведем какую-то инициализацию. После этого она доступна для нашего использования из Django приложения.
Программу «pgAdmin» можно закрыть.
Итак, откроем PuTTy-терминал, и выполним следующие команды:
$ cd ~
$ cd django-projects/mysite_ss/mysite/
$ python manage.py syncdb
Начнется процесс создание БД согласно нашей модели.
Прервется он вопросом о создании Django-superusera, отвечаем «yes», затем я ввел «evg», свой e-mail, и 2 раза пароль. Эти данные будут использоваться для входа в «админку».
Перезапустим сервер Apache
$ sudo /etc/init.d/apache2 restart
Для того, чтобы можно было обращаться к сайту не только по IP добавьте в файл «hosts» находящийся в папке «C:\Windows\System32\drivers\etc» следующую строку:
10.10.10.43 wsgi.mysite.ss
Затем запускаем броузер, и в адресной вводим «wsgi.mysite.ss/admin».
Если вы сделали все в точности как я описывал – у вас появится окно приглашение для входа в административный интерфейс нашего Django приложения. Тут надо ввести ваш логин и пароль, созданный на предыдущем шаге. У меня это «evg» и «0».
Далее щелкните на ссылке «Add» справа от слов «Blog posts». Откроется окно для добавления записи в таблицу «BlogPosts»
После заполнения полей «Title», «Body», «Date» и «Time» нажмите на кнопку «Save and add another» при этом произойдет сохранение первой записи, и предложение на ввод следующей. Проделайте эту операцию несколько раз, как решите закончить, просто нажмите кнопку «Save». Я добавил еще 2 записи.
После нажатия кнопки «Save» перед нами экран со списком всех записей таблицы.
Теперь в адресной строке можно набрать «wsgi.mysite.ss/blog» и любоваться результатом:
Дальше вы сами сможете дополнять это простое приложение другим функционалом, используя в качестве руководства либо вышеупомянутую книгу, либо переведенную документацию к Django по адресу . Так же множество примеров можно найти в сети.
Все файлы этого проекта лежат здесь.
Еще раз хочу заострить внимание на редакторах. Проверяйте кодировку – она должна быть такая, как я упоминал в начале этой части статьи. Я несколько раз получал ошибку именно из-за того, что в файл попадали лишние символы, или наоборот исчезали нужные.
На этом я уже хотел завершить цикл статей под общим заголовком «Django – среда обитания». В первоначальном варианте, эта часть – была последней. И она даже успела в таком виде пролежать на сайте несколько часов. Но я вовремя вспомнил о том, что без рассказа о настройке окружения в Windows, статья будет выглядеть незавершенной. Я сам постоянно с этим сталкиваюсь, читая очередной «мануал» в сети. Поэтому будет продолжение.
В следующей части рассмотрим установку Python и Django в Windows.






















вот как раз собрался вникать почему пример с вышеуказанной книжки не работает… а тут уже всё подправлено. ну просто супер!!!
спасибо
Рад, что помог. Но разбираться – все равно придется :) Там в файлах убран, иногда не нужный префикс «mysite.»; исправлен согласно новой Djang’e файл urls.py для админки в корне, и в models.py добавлено представление объекта в формате unicode ( def __unicode__(self): )
бодрого времени суток, у меня возникли трудности в процессе выполнения команды manage.py syncdb
скриншот ошибки
Не находит модуль. Смотрите настройки путей.
единственное, мне еще надо было добавить
'django.contrib.admin',в секцию INSTALLED_APPS
После этого надо обязательно вызвать
python manage.py syncdbну и еще я апачу перегрузил (на всяк случай)