Так вышло, что последние 2 месяца я прохожу курс по алгоритмам на stepic.org от CSC ну и благодаря курсу я узнал много нового и вспомнил много того, чего забыл. Пока память свежа, решил опубликовать решение одной из задач... Читать далее...

Познакомимcя с сайтом Django-Rest-Framework. Обратите внимание при просмотре курса, а так же изучим одну из технологий.

То есть программировать будем осознано. То что казалось вам не понятным, после просмотра курса. вы скажете, Боже мой. как всё просто.

Смотреть видео.

В этом блоге я расскажу, как установить и настроить приложение flatpages для добавления статических страниц из админки сайта на django.
Друзяь, если Вы решили изучать Python/Django в нашей школе практического программирования, то советую вам добавить мой блог в закладки он вам очень пригодится, тут я записываю весь свой путь изучения django, вам будет легче пройти этот путь т.к. вы можете избежать многих трудностей! Начнемс. Открываем документацию по установке и настройке данного приложения на сайте djbook.ru Видим, что первым делом нам нужно добавить в свой файл настроек settings.py несколько параметров. В INSTALLED_APPS добавляем

'django.contrib.sites',
'django.contrib.flatpages',
В MIDDLEWARE_CLASSES добавляем
'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
В любом месте в файле settings.py вставляем этот параметр
SITE_ID = 1
Далее выполняем миграцию в базу данных. Я выполнял командой syncdb. Если по каким либо причинам при миграции у вас выходят ошибки, как было в моем случае, то обновите версию django не ниже 1.7.10 Далее переходим в админку и видим, что добавились несколько разделов - это
    Простые страницы Сайты
Заходим в простые страницы и жмем добавить страницу. В открытом окне заполняем поля как на скриншоте django Тут все просто думаю разберетесь. Единственное, что в поле Sites вам нужно добавить свой сайт и указать параметр SITE_ID = 1 или SITE_ID = 2 если собираетесь использовать на нескольких сайтах. Далее переходим в главный файл urls.py вашего проекта и там делаем ссылку на эту страницу.
url(r'^(?Pcontact/)$', 'django.contrib.flatpages.views.flatpage'),
По этому урлу ваша страница будет выводится. Далее в папке templates создаем папку flatpages и в ней файл default.html python В файле default.html наследуемся от главного шаблона и пишем простые теги для вывода текста.
{% extends 'base.html' %}

{% block content %}

{{ flatpage.title }}

{{ flatpage.content }} {% endblock %}
Все, теперь у вас будет работать статическая страница, которую вы добавили в админке сайта. Еще больше информации о программировании на Python/Django можно найти в нашей школе, где я прохожу обучение сейчас.

Применение методов exclude и filter в Django на практике. Применяется для того, что бы сделать выборку записей отвечающих определённым требованиям, например начинается заголовок с определённого слова.

Читать и смотреть видео, как мы занимаемся.

Выполнение запросов QuerySet, сортировка объектов в Django и вывод всех записей.

Научиться выводить:

    все записи

    последние первыми

    в перемешку

    подряд

    понять как это записывается в базе данных

    /

Смотреть видео.

Для предоставления пользователю возможности создавать записи в базах данных прежде всего хочется себя обезопасить от хулиганства. Для этого, пользователь, добавляющий записи должен быть зарегистрирован на сайте. Хочется, чтобы регистрация осуществлялась в 1-2 клика и без ввода с клавиатуры. В этом нам может помочь регистрация пользователей через социальные сети. Воспользуемся библиотекой django-allauth для организации авторизации через социальные сети. Установка библиотеки довольно подробно описана в документации. Единственная проблема, с которой я столкнулся при добавлении приложения - это то, что в этом проекте есть шаблон base.html, и если добавить это приложение до своих приложений и у вас есть тоже шаблон base.html, то возможно пересечение шаблонов. Я это обошел, переназвав свой шаблон в main.html. Читать далее...

Создание блога на Django 1.8. Шаг 2 Подключаем визуальный редактор (tinimce и ckeditor) к блогу на Django 1.8 http://youtu.be/wz95Gd6INWc Сначала я подключил редактор tinymce, но не смог разобраться, как в нем сделать загрузку картинок на сервер. Поэтому потом убрал его и подключил ckeditor (в котором эта возможность есть). Сначала выполняем: pip install django-tinymce Добавляем 'tinymce' в settings.py

INSTALLED_APPS = (
    ...
    'tinymce',
)
Потом в файле urls.py проекта добавляем строку url(r'^tinymce/', include('tinymce.urls')),
urlpatterns = patterns('',
    ...
    url(r'^tinymce/', include('tinymce.urls')),
)
В models.py заменяем models.TextField на HTMLField
from tinymce.models import HTMLField
class Article(models.Model):
    ...
    summary = HTMLField(blank=True, default='')
    content = HTMLField(blank=True, default='')
Если зайти в админку, мы увидем чть tinymce заработал с настройками по умолчанию. Теперь можно добавить больше функционала. Добавляем этот код в settings.py
TINYMCE_DEFAULT_CONFIG = {
    'plugins': "table,spellchecker,paste,searchreplace",
    'theme': "advanced",
    'cleanup_on_startup': True,
    'custom_undo_redo_levels': 10,
}
TINYMCE_SPELLCHECKER = True
TINYMCE_COMPRESSOR = True
Редактор заработал (на локальном сервере). На хостинге нужно будет запускать collectstatic и настраивать STATIC_ROOT Картинки можно загружать вручную на сервер а потом прописывать путь. Теперь отключу tinymce и подключу ckeditor Для этого нужно выполнить pip install django-ckeditor Добавить ckeditor и ckeditor_uploader в INSTALLED_APPS
INSTALLED_APPS = (
    ...
    'ckeditor',     'ckeditor_uploader',)
Также в settings.py добавим
MEDIA_ROOT = 'media/'
MEDIA_URL = '/media/'
CKEDITOR_UPLOAD_PATH = 'uploads/'
В blog_project\urls.py добавим url(r'^ckeditor/', include('ckeditor_uploader.urls')),
from django.conf.urls.static import static
from blog_project import settings
urlpatterns = [
    ...
    url(r'^ckeditor/', include('ckeditor_uploader.urls')),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Создаем каталог blog_project\media\uploads для загрузки файлов. В models.py заменяем models.TextField на RichTextUploadingField
from ckeditor_uploader.fields import RichTextUploadingField
class Article(models.Model):
    ...
    summary = RichTextUploadingField(blank=True, default='')
    content = RichTextUploadingField(blank=True, default='')
Запускаем, на всякий случай, makemigration и migrate Потом collectstatic, который копирует нужные файлы ckeditor-а в каталог static Работает! На следующем шаге загружу блог на хостинг. Создание блога на Django 1.8. Шаг 1

Курс 19 уроков по 10 минут.

Основная цель понять как использовать ForeignKey, ManyToManyField. Задача реализовать веб приложение для выполнения задачи.. Легенда. Диспетчеру механик подал данные, какие машины нужно обслужить и что сделать(плановое ТО + дополнительное обуслуживание) Реализовать интерфейс, что бы была выполнима задача и можно было документировать.(выписат наряд) Диспетчер ставит задачу технарю. Условия приложения. Диспетчер: 1. Выбирает станцию из списка. (список) 2. Выбирает услуги, которые необходимо совершить. (множественный выбор) 3. Назначает, кто её выполнит. (единичный или множественный выбор) 4 Марку авто. (1 авто из списка) Домашнее задание, 1.вывести то , что в админке на страницы. 2. Нарисовать формы на операции.(пока не выполнять)

Читать и смотреть видео.

Всем привет! Ну вот, прослушал и проделал урок 48 в школе на spb-tut.ru. Добавил новую форму в практикум, соединил форму с моделью, теперь можно добавлять данные из формы в модель. Пока что сделал не безопасно и добавить данные в модель может кто угодно, но завтра или послезавтра эту "дырку" закрою. Выложил результаты практикума на github. Сам пример можно посмотреть на этой странице. Раньше писал информацию о коде на закладке "Код" практикумов, но теперь буду его отпралять на GitHub и давать ссылку на конкретные коммиты или просто на папки проекта. Читать далее...

Друзья, сегодня решил отправить свой проект на GitHub. Во первых - контроль версий будет полезен мне. Во вторых, все желающие смогут посмотреть мой исходный код и: - что то взять себе как пример - указать мне на мои ошибки В третьих - при разборе примеров я смогу давать ссылки на файлы на GitHub... Читать далее...