![](/media/blog/images/3-subsets.png)
Так вышло, что последние 2 месяца я прохожу курс по алгоритмам на stepic.org от CSC ну и благодаря курсу я узнал много нового и вспомнил много того, чего забыл. Пока память свежа, решил опубликовать решение одной из задач...
Так вышло, что последние 2 месяца я прохожу курс по алгоритмам на stepic.org от CSC ну и благодаря курсу я узнал много нового и вспомнил много того, чего забыл. Пока память свежа, решил опубликовать решение одной из задач...
Познакомимcя с сайтом Django-Rest-Framework. Обратите внимание при просмотре курса, а так же изучим одну из технологий.
То есть программировать будем осознано. То что казалось вам не понятным, после просмотра курса. вы скажете, Боже мой. как всё просто.
В этом блоге я расскажу, как установить и настроить приложение flatpages для добавления статических страниц из админки сайта на django.
Друзяь, если Вы решили изучать Python/Django
'django.contrib.sites',
'django.contrib.flatpages',
В MIDDLEWARE_CLASSES добавляем
'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
В любом месте в файле settings.py вставляем этот параметр
SITE_ID = 1
Далее выполняем миграцию в базу данных. Я выполнял командой syncdb.
Если по каким либо причинам при миграции у вас выходят ошибки, как было в моем случае, то обновите версию django не ниже 1.7.10
Далее переходим в админку и видим, что добавились несколько разделов - это
url(r'^(?Pcontact/)$', 'django.contrib.flatpages.views.flatpage'),
По этому урлу ваша страница будет выводится.
Далее в папке templates создаем папку flatpages и в ней файл default.html
{% extends 'base.html' %}
{% block content %}
{{ flatpage.title }}
{{ flatpage.content }}
{% endblock %}
Все, теперь у вас будет работать статическая страница, которую вы добавили в админке сайта.
Еще больше информации о программировании на Python/Django Применение методов exclude и filter в Django на практике. Применяется для того, что бы сделать выборку записей отвечающих определённым требованиям, например начинается заголовок с определённого слова.
Научиться выводить:
все записи
последние первыми
в перемешку
подряд
понять как это записывается в базе данных
/Для предоставления пользователю возможности создавать записи в базах данных прежде всего хочется себя обезопасить от хулиганства. Для этого, пользователь, добавляющий записи должен быть зарегистрирован на сайте. Хочется, чтобы регистрация осуществлялась в 1-2 клика и без ввода с клавиатуры. В этом нам может помочь регистрация пользователей через социальные сети.
Воспользуемся библиотекой django-allauth для организации авторизации через социальные сети. Установка библиотеки довольно подробно описана в документации. Единственная проблема, с которой я столкнулся при добавлении приложения - это то, что в этом проекте есть шаблон base.html, и если добавить это приложение до своих приложений и у вас есть тоже шаблон base.html, то возможно пересечение шаблонов. Я это обошел, переназвав свой шаблон в main.html.
Создание блога на Django 1.8. Шаг 2
Подключаем визуальный редактор (tinimce и ckeditor) к блогу на Django 1.8
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
Работает!
На следующем шаге загружу блог на хостинг.
Всем привет! Ну вот, прослушал и проделал урок 48 в школе на spb-tut.ru. Добавил новую форму в практикум, соединил форму с моделью, теперь можно добавлять данные из формы в модель. Пока что сделал не безопасно и добавить данные в модель может кто угодно, но завтра или послезавтра эту "дырку" закрою. Выложил результаты практикума на github. Сам пример можно посмотреть на этой странице. Раньше писал информацию о коде на закладке "Код" практикумов, но теперь буду его отпралять на GitHub и давать ссылку на конкретные коммиты или просто на папки проекта.
Друзья, сегодня решил отправить свой проект на GitHub.
Во первых - контроль версий будет полезен мне.
Во вторых, все желающие смогут посмотреть мой исходный код и:
- что то взять себе как пример
- указать мне на мои ошибки
В третьих - при разборе примеров я смогу давать ссылки на файлы на GitHub...