search
top

Пишем Блог на Django

- сильный web framework, созданный на Питоне, который следует философии, DRY (Don’t repeat yourself) дословно в переводе “Не повторяйся”. Это позволяет быстро разрабатывать вебсайты. чрезвычайно быстр и гибок — он намного быстрее PHP.

В этой статье я представлю вам , на примере блога.
Нашей целью будет:
1.Создать базу данных sqlite3 с названием to-do.db. Для этого используем ORM
2.Главную страницу блога, где будут наши новости
3.Сделать админ панель с авторизацией, что бы можно было добавлять новости игруппы пользователей
Вы очень удивитесь, как это просто делается на !
Я надеюсь, что у вас уже есть установленный ? Если нет то вам сюда!
Начнем!!!

Во-первых, мы должны создать свой проект. Чтобы сделать это, мы должны использовать командную строку! Но я советую пользоваться Far’ом очень удобно в нем есть и командная строка и редактор текста (с подсветкой синтаксиса) и т.д..

1) Cоздаем папку, например с названием example желательно в корне диска (чтобы путь короче был :-)), а вообще можно где угодно. Переносим из папки -1.0.2-final\build\scripts-2.5 файл -admin.py нашу папку example и находясь в ней, делаем запрос в командной строке:
-admin.py startproject todo
Мы создали каталог с названием todo в корне папки example, зайдя в него вы увидите такую структуру:

1todo

Если вылетела ошибка при создании данной папки, то убедитесь что вы находитесь в папке example и что у вас установлен и .

2) Далее пишем вот такое:

manage.py startapp core

после переходим в созданную директорию, она должна выглядеть, как показано ниже:

2core

3) Теперь, когда наш проект создан, мы должны настроить его. Открываем todo/settings.py

в любом текстовом редакторе и начинаем настройку. Нам необходимо определить какую базу данных будем использовать ( поддерживает большинство модных баз MySQL, Postgres, Oracle и т.д.). Так как мы только начинаем знакомство с будем использовать SQLite.

В строке 12 пишем какую базу будем использовать, в нашем случае sqlite3

DATABASE_ENGINE = ’sqlite3′

В строке 13 название базу (я обозвал to-do.db но вы можете и по-другому)

DATABASE_NAME = ‘to-do.db’

3settings

Настройку нашей базы закончили.

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

'.contrib.admin',
'todo.core',

!!!! После строки:’.contrib.sites’,

Должно выглядеть вот так:

4settings

Всё готово, сохраняем файл settings.py.

6) Теперь мы должны определить свою модель. Откройте/todo/core/models.py в любом текстовом редакторе. Поскольку я сказал выше, что модели определяют структуру базы данных, то нам ненадо делать никаких SQL запросив. может сделать все это за нас. Мы только должны определить с тем, что мы хотим, а нам надо что бы каждая новая запись имела Название, Описание и Дату публикации.

Это очень легко сделать в .

from .db import models

class todo(models.Model): #Table name, has to wrap models.Model to get the functionality of .
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) Теперь, когда мы определили базу данных, мы должны сказать что бы он синхронизировал все таблицы.

Мы можем сделать это, набрав syncdb команду в командной строке. Так сделаем же это!!

Откройте командную строку убедитесь, что вы в директории todo/. И сделайте запрос:
manage.py syncdb
По ходу процесса вас попросят ввести имя, e-mail, пароль администратора. Запомните имя и пароль поскольку мы будем использовать их, что бы попасть в админ панель.

5syncdb

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

69090

8) Теперь мы должны настроить URL.

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

Это просто означает, что мы определяем их непосредственно в файле todo/urls.py. Мы должны установить URL для страницы индекса, а также разрешить нашу админ панель. Если пользователь наберёт страницу которой нет, то вернется ошибка 404.

from .conf.urls.defaults import *
from .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 .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 .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/.

7admin1

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

8admin2

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

9add

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

10index

СКАЧАТЬ ПРИМЕР

(доступ к панели администратора LOGIN:test , PASS:test)

Вот и Всё! Конец!

Связанные записи

  • http://покаnone Sashatim

    Здравствуйте!!!
    Меня очень заинтерисовал django и я внимательно прочитал вашу статью “Пишем Блог на Django” очень кратко и ясно написанно нельзяли продолжить эту тему хотя я долго мучился с пониманием её так не разу не писал сайтов.
    Вопрос?
    Это ошибка или я чего-то недопонял :
    4) Теперь нам надо прописать полный путь до папки, в которой будут HTML шаблоны нашего Django сайта. Для этого в директории todo создаем папку templates, потом открываем файл todo/settings.py и в строке 70 пишем путь до папки templates:
    “C:/example/todo/core/templates” +++++++++
    И ниже на изображении строки кода:
    TEMPLATE_DIRS = (
    “C:/examples/todo/templates” +++++
    # Put strings here, like “/home/html/django_templates” or “C:/www/django/templates”.
    # Always use forward slashes, even on Windows.
    # Don’t forget to use absolute paths, not relative paths.
    )

  • http://www.hydrovikon.ru Louieze

    Спасибо. То, что нужно ))

  • N_0v

    Спасибо очень помогло :)

  • http://risunok.love2learn.ru alart

    Интересно написано о фреймфорке и на конкретном примере, спасибо. (капча - улет))

  • alex

    Отлично - то что надо

  • http://evgenm.com Евгений

    Ну для тренировки каждый может блог попробовать написать, а вообще конечно есть хорошее решение готовое - byteflow.

  • http://pokanet Игорь

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

    Качаем Active Python - ставим,

    Делаем в командной строке pip install django. Все.

    Можно поставить MySQL

    И все необходимые депенденсы через pip.

  • Alex

    Мда. Заставляет задуматься то, что написано 1 апреля:)))). Спасибо большое:).

  • jingvar

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

blog comments powered by Disqus
top