Пишем Блог на Django
Django - сильный web framework, созданный на Питоне, который следует философии, DRY (Don’t repeat yourself) дословно в переводе “Не повторяйся”. Это позволяет быстро разрабатывать вебсайты. Django чрезвычайно быстр и гибок — он намного быстрее PHP.
В этой статье я представлю вам Django, на примере блога.
Нашей целью будет:
1.Создать базу данных sqlite3 с названием to-do.db. Для этого используем ORM
2.Главную страницу блога, где будут наши новости
3.Сделать админ панель с авторизацией, что бы можно было добавлять новости игруппы пользователей
Вы очень удивитесь, как это просто делается на Django!
Я надеюсь, что у вас уже есть установленный Django? Если нет то вам сюда!
Начнем!!!
Во-первых, мы должны создать свой проект. Чтобы сделать это, мы должны использовать командную строку! Но я советую пользоваться Far’ом очень удобно в нем есть и командная строка и редактор текста (с подсветкой синтаксиса) и т.д..
1) Cоздаем папку, например с названием example желательно в корне диска (чтобы путь короче был :-)), а вообще можно где угодно. Переносим из папки Django-1.0.2-final\build\scripts-2.5 файл django-admin.py нашу папку example и находясь в ней, делаем запрос в командной строке:
django-admin.py startproject todo
Мы создали каталог с названием todo в корне папки example, зайдя в него вы увидите такую структуру:

Если вылетела ошибка при создании данной папки, то убедитесь что вы находитесь в папке example и что у вас установлен Django и Python.
2) Далее пишем вот такое:
manage.py startapp core
после переходим в созданную директорию, она должна выглядеть, как показано ниже:

3) Теперь, когда наш проект создан, мы должны настроить его. Открываем todo/settings.py
в любом текстовом редакторе и начинаем настройку. Нам необходимо определить какую базу данных будем использовать (Django поддерживает большинство модных баз MySQL, Postgres, Oracle и т.д.). Так как мы только начинаем знакомство с Django будем использовать SQLite.
В строке 12 пишем какую базу будем использовать, в нашем случае sqlite3
DATABASE_ENGINE = ’sqlite3′
В строке 13 название базу (я обозвал to-do.db но вы можете и по-другому)
DATABASE_NAME = ‘to-do.db’

Настройку нашей базы закончили.
4) Теперь нам надо прописать полный путь до папки, в которой будут HTML шаблоны нашего Django сайта. Для этого в директории todo создаем папку templates, потом открываем файл todo/settings.py и в строке 70 пишем путь до папки templates:
“C:/example/todo/core/templates”
5) Последним штрих настройки это добавление приложений. Для этого нам нужно добавить свое приложение(todo.core) и приложение админки (django.contrib.admin) к уже установленным. В строку 81 вставим:
'django.contrib.admin', 'todo.core',
!!!! После строки:’django.contrib.sites’,
Должно выглядеть вот так:

Всё готово, сохраняем файл settings.py.
6) Теперь мы должны определить свою модель. Откройте/todo/core/models.py в любом текстовом редакторе. Поскольку я сказал выше, что модели определяют структуру базы данных, то нам ненадо делать никаких SQL запросив. Django может сделать все это за нас. Мы только должны определить с тем, что мы хотим, а нам надо что бы каждая новая запись имела Название, Описание и Дату публикации.
Это очень легко сделать в Django.
from django.db import models class todo(models.Model): #Table name, has to wrap models.Model to get the functionality of Django. name = models.CharField(max_length=100, unique=True)#Like a VARCHAR field description = models.TextField() #Like a TEXT field created = models.DateTimeField() #Like a DATETIME field def __unicode__(self): #Tell it to return as a unicode string (The name of the to-do item) rather than just Object. return self.name
Это идентично вот такому Sql запросу:
CREATE TABLE `todo` ( `id` serial NOT NULL PRIMARY KEY, `name` varchar(100) NOT NULL, `description` TEXT, `created` DATETIME, );
7) Теперь, когда мы определили базу данных, мы должны сказать Django что бы он синхронизировал все таблицы.
Мы можем сделать это, набрав syncdb команду в командной строке. Так сделаем же это!!
Откройте командную строку убедитесь, что вы в директории todo/. И сделайте запрос:
manage.py syncdb
По ходу процесса вас попросят ввести имя, e-mail, пароль администратора. Запомните имя и пароль поскольку мы будем использовать их, что бы попасть в админ панель.

Для этого урока мы собираемся использовать испытательный сервер Django, чтобы проверить наше приложение. Но сстрого советуют, чтобы Вы не использовали испытательный сервер на боевых проектах, вместо него надо запускать apache + mod_python или FastCGI. Чтобы запустить испытательный сервер, мы снова вызываем manage.py, но с параметром runserver. Мы можем дополнительно указать порт и ip адрес. По умолчанию сервер запускается на 8000 порту, а мы запустим для примера на 9090.
manage.py runserver 9090
Чтобы посмотреть результаты, зайдите по адресу http://127.0.0.1:9090/

Теперь мы должны настроить URL.
Схема URL описывает содержание вашего сайта. Таким образом, при вызове определённого URL, происходит поиск соответствующего шаблона в схеме, как только он будет найден, происходит вызов соответствующей функции представления.
Это просто означает, что мы определяем их непосредственно в файле todo/urls.py. Мы должны установить URL для страницы индекса, а также разрешить нашу админ панель. Если пользователь наберёт страницу которой нет, то вернется ошибка 404.
from django.conf.urls.defaults import * from django.contrib import admin admin.autodiscover() urlpatterns = patterns('', (r'^admin/(.*)', admin.site.root), #Lets us access the admin page (r'^$', 'todo.core.views.index'), #Our index page, it maps to / . Once the page is called it will look in /todo/core/views.py for a function called index )
Прежде чем использовать мы сможем использовать admin группу, надо зарегистрировать модель. Создаем todo/core/admin.py и пишем в нём:
from django.contrib import admin #Import the admin from models import todo #Import our todo Model. admin.site.register(todo) #Register the model with the admin
Теперь, когда URL установлены, база данных синхронизируется, и модель зарегистрирована, мы можем получить доступ к своей группе администраторов.
Но это еще не все, если вы зайдете на http://127.0.0.1:9090, то вы увидите сообщение об ошибке. Потому что мы в urls.py файле мы определили, что если пользователь посетит главную страницу, то загрузится /todo/core/views.py который мы ещё не определили, но исправим это сейчас. Мы пишем index() точно так же как и любую другую функцию Питона, кроме этого она должна принять запрос и возвратить ответ:
from models import todo from django.shortcuts import render_to_response def index(request): #Define our function, accept a request items = todo.objects.all() #ORM queries the database for all of the to-do entries. return render_to_response('index.html', {'items': items}) #Responds with passing the object items (contains info from the DB) to the template index.html
Теперь нам осталось создать шаблон, для этого создаём папку templates в todo/core/ ,
а в ней файл index.html с таким содержанием:
<h2>todo</h2>
{% for x in items %}
{{ x.name }} - {{ x.created|date:"D d M Y" }}
{{ x.description }}
<hr />{% endfor %}
Немного разберём:
Все переменные заключены в двойные скобки — {{переменная}}, а их у нас в шаблоне будет три
{{ x.name }} - Название новости
{{ x.created|date:”D d M Y” }} - дата публикации
{{ x.description }} - основной текст
И всё это обрабатываем в цикле.
Запустите испытательный сервер и наберите адрес http://127.0.0.1:9090/admin/.

Введите логин и пароль, который вы создали при синхронизации базы. Если все верно вы войдете в панель администрирования

Добавьте новость.

Вот и всё наша новость на главной странице новоиспеченного блога.

СКАЧАТЬ ПРИМЕР
(доступ к панели администратора LOGIN:test , PASS:test)
Вот и Всё! Конец!
Связанные записи
-
http://покаnone Sashatim
-
http://www.hydrovikon.ru Louieze
-
N_0v
-
http://risunok.love2learn.ru alart
-
alex
-
http://evgenm.com Евгений
-
http://pokanet Игорь
-
Alex
-
jingvar
