admin / 27.01.2018

Ручная установка Django-CMS. | Recipes | Django на русском

Django. Своя CMS. Часть 2

Дата публикации:29 апреля 2013 г. 1:33:17

Снова здравствуйте! В этой части урока по созданию своей CMS с помощью Django мы сделаем:

  • Файл urls.py
  • Файл views.py
  • Файл utils.py
  • Файл forms.py
  • Создадим свою модель пользователя(просто для примера). И сделаем регистрацию пользователя. Ее создание я описывал здесь.
  • И еще что-нибудь

 Итак, начнем. Для начала создадим файл urls.py в каталоге app и добавим в него несколько строк кода.

Файл urls.py

Комментарии излишни, но все же я их добавил. Дальше поработаем с файлом views в каталоге app.

Файл views.py

Итак, здесь мы обращаемся к стандартной форме авторизации Django, а также, подключаем свою для регистрации и изменения профиля. Идем дальше. Теперь нужно создать форму регистрации. Создаем файл forms.py в папке app.

Файл forms.py

 Далее, нам нужно создать шаблоны. Здесь, я думаю вы сами разберетесь. Теперь, создадим файл admin.py в каталоге pages.

Файл admin.py

Я думаю, пояснять его не нужно. Если он вызывает у вас вопросы, то вам лучше сходить почитать документацию по Django. Теперь создадим файл utils.py в том же каталоге, который будет возвращать урл страницы с учетом всех родителей.

Файл utils.py

Здесь представлена рекурсивная функция. Эта функция будет вызываться из метода get_absolute_url в классе Page. Идем дальше, осталось совсем чуть-чуть. Теперь создадим файл views.py в каталоге pages.

Файл views.py

Немного поясню про path. Поскольку, урл у нас может быть довольно длинным(здесь зависит от количества родителей страницы), мы убираем из начала и конца символ / и с помощью функции split формируем список, который будет содержать каждого родителя и сам slug страницы. Дальше, поскольку у нас всегда должны быть уникальными slug родителя и slug самой страницы — их мы и отдаем по ключам -1 и -2.

Пока все. Третья часть опишет шаблонные теги и шаблоны. Спасибо за внимание!

Метки:django, cms, система управления, python

Что такое Djang-CMS

Django-CMS — это система управления контентом, написанная на Python, с использованием фреймворка Django. Она гибкая, настраиваемая, для неё создано много модулей. Помимо этого можно добавлять свои модули.

Установка

  1. Сделаем новый virtualenv

«` bash Запустите в шеле следующие комманды sudo aptitude install python2.6 python-setuptools python-imaging sudo easy_install pip sudo pip install django==1.3.1 django-cms south django-admin.py startproject mycmsproject cd mycmsproject rm settings.py rm urls.py wget https://gist.github.com/raw/1125918/settings.py wget https://gist.github.com/raw/1125918/urls.py mkdir templates cd templates wget https://gist.github.com/raw/1125918/example.html cd ..

Создаем свое первое веб-приложение при помощи Django

python manage.py syncdb —all python manage.py migrate —fake python manage.py runserver

### Настройка одного языка для django-cms 2.4.1 Так чтобы небыло префикса 'ru' в урлах В файл settings.py «` python CMS_LANGUAGES = { 1: [ { 'code': 'ru', 'name': gettext('Russian'), # 'fallbacks': [], 'public': True, 'hide_untranslated': True, 'redirect_on_fallback':False, }, ], 'default': { 'fallbacks': ['ru'], 'redirect_on_fallback':True, 'public': False, 'hide_untranslated': False, } } DEFAULT_LANGUAGE = 0 LANGUAGE_CODE = 'ru-RU' USE_I18N = True USE_L10N = True

Повторение place_holder элементов на всех страницах

Часто требуется повторение элементов с главной страницы на всех страницах Для этого нужно в расширенных свойствах страницы указать id страницы (к примеру) И написать что-то вроде этого: {\% show_placeholder «teaser_right_bottom» «index» \%}

Новостной плагин для django-cms

Эти новости хорошие, только подправить navigation.py

#from cms.utils.navigation import NavigationNodefrommenus.baseimportNavigationNode

Дальше кастомизировать шаблоны, предварительно скопировав их в папку templates проекта. Возможно вся кастомизация будет заключаться в прописвании {\% extends «base.html» \%} в начало каждого шаблона новостей.

Ещё для использования sqlite

Для моего проекта используются следующие модули, сделано командой pip freeze:

../../bin/pip freeze Django==1.3.1 PIL==1.1.7 South==0.7.3 cmsplugin-contact==0.9.8 cmsplugin-filer==0.8.0 cmsplugin-filer-gallery==1.0.1.pre-alpha cmsplugin-news==0.3b django-appmedia==1.0.1 django-categories==0.8.5 django-classy-tags==0.3.4.1 django-cms==2.2 django-filer==0.8.5 django-filer-gallery==1.0.pre-alpha django-mptt==0.4.2 django-polymorphic==0.4.2 django-sekizai==0.5 easy-thumbnails==1.0-alpha-20 html5lib==0.90 wsgiref==0.1.2

Если есть уже работающий на сервере проект, а его нужно запустить локально, то создаем виртуальную питоновскую среду, и кропотливо устанавливаем все зависимости. Иначе выйдет боком.

Использование Bootstrap

Я скачиваю с гитхаб zip архив bootstrap. Затем кладу в папку статических файлов папки из master-bootstrap: img, js, less

В папке less создаю файл style.less примерно такого содержания:

@inputHeight:10px;@import'mixins.less';header{color:#000000;//background-color:#666666;//#gradient>.vertical(#D695B3,#666666);//background-image:url(../img/maket_03.png);//background-repeat:no-repeat;//background-position:center;}body{background-color:#666666;color:#FEFCFD;height:100%;}.my_nav_bar{font:bold16pxArial;}article{line-height:25px;background:url(../img/stroke.jpg)100%50%repeat-ytransparent;p{margin-bottom:30px;margin-right:40px;padding-right:10px;}}.my_grad{background-color:#666666;#gradient>.vertical(#D695B3,#666666);}#myhr{border-bottom:2pxsolid#D594B2;padding-bottom:10px;margin-bottom:15px;}.footer_cups{background-image:url(../img/bcups.jpg);background-repeat:no-repeat;background-position:right;height:100px;a{color:#FEFCFD;text-decoration:underline;}a:hover{color:#000;}}.thumbnails{text-align:center;}.thumbnails>li{display:inline-block;*display:inline;/* ie7 fix */float:none;/* this is the part that makes it work */}//CUSTOM.offersimg{margin:10px;}asideimg{margin:10px;}.plugin_yandexmapimg{max-width:none;}

Дальше компилирую его командой, то как это настраивается можно почитать тут. И соответственно в шаблоне уже ссылаемся на новый style.css

Ещё с главной страницы bootstrap качаем скомпилированный bootstrap.zip, копируем файлы в соответствующие папки


.

В чём преимущества фреймворка Django перед традиционными CMS?

Создание сайтов

Давайте ответим сразу и честно: всё зависит от той задачи, которую ставит перед собой каждый конкретный WEB-мастер. Для начинающих мастеров и реализации не самых сложных задач будет вполне достаточно обычных CMS «из коробки». В конце концов, люди умудряются делать интернет-магазины на WordPress и Joomla, а сайты – в конструкторах.

И всё это как-то работает. Только вот ключевое слово здесь: «как-то». Старенькие «Жигули» тоже «как-то» ездят, перевозя груз и пассажиров. Но при наличии новенького «Мерседеса» выбор обязательно будет сделан в пользу последнего.

Что такое Django и при каких условиях он будет эффективен?

Для тех, кто не знает – это очень мощный, современный фреймворк, написанный с помощью языкаPython. Но вся его мощь может оказаться ненужной, если программист напишет низкопробный код. Как же использовать фреймворк правильно? Для этого следует использовать Django так, чтобы наш код был:

  • связным;
  • тестируемым;
  • масштабируемым.

На практике это означает:

1. Связный код – выполняет одну-единственную функцию, или метод. Ещё раз: он делает только что-то одно, но на отлично.

2. Тестируемый – напрямую зависит от п.1 – код должен быть предельно прост для тестирования. Если же кусок кода сложен для написания теста, или программисту кажется: «это не стоит таких усилий» – значит, следует вернуться немного назад и заняться упрощением кода, чтобы в нём легко можно было найти проблемные места.

3. Масштабируемость. А это на практике означает, что ваш код настолько хорош, что в нём с лёгкостью разберётся другой специалист. И не только поймёт, но и без проблем внесёт в него свои правки, дополнения, адаптировав к другой, или видоизменённой задаче.

Так почему Django, а не обычные системы управления контентом?

  • В первую очередь, в обычных CMS есть своя «плата за универсальные решения». Как правило, это конфликты между дополнительно устанавливаемыми модулями, расширениями, плагинами, более медленная загрузка сайта в результате какого-то количества избыточного кода.

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

В отличие от обычных систем управления контентом, разработчик на Django создаёт сайт «с чистого листа», максимально точно соответствуя требованиям будущего проекта. У квалифицированного программиста просто не может быть лишнего кода, если он следует 3-м правилам эффективности, описанным выше.

Помимо этого, у Django есть определённые правила и нормы разработки, а значит, любой специалист легко разберётся в том, что было написано до него, потому что заведомо понимает где и что должно быть расположено и как именно функционировать.

  • Во вторую очередь, с помощью Django можно гибко настроить панель управления контентом (админку сайта) под любой конкретный проект.

    Ручная установка Django-CMS.

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

  • Напоследок отметим, что Django использует мощный современный язык программирования Python. Пайтон на сегодня – один из самых популярных языков, который продолжает развиваться и совершенствоваться усилиями всего международного сообщества айтишников.

Компания Номакс также находится в первых рядах среди лучших разработчиков, используя наиболее современные методы, в том числе и фреймворк Django. Посмотреть примеры наших работ и убедиться в профессионализме можно здесь https://nomax.com.ua/portfolio/

FILED UNDER : IT

Submit a Comment

Must be required * marked fields.

:*
:*