序章

Djangoベースのコンテンツ管理システム(CMS)で利用できるいくつかの一般的なオプションの1つは、FeinCMSです。 Djangoアップグレードという意味でのフレームワークであるため、FeinCMSを使用して比較的複雑なWebサイトやアプリケーションを簡単に作成することができます。

このDigitalOceanの記事では、この興味深いツールを紹介し、FeinCMSコンテンツ管理システムフレームワークの使用を開始する方法を紹介します。

用語集

1. Djangoの概要

2. FeinCMS

  1. FeinCMSの利点

3. はじめに:Ubuntuドロップレットの準備

4. FeinCMSのインストール

  1. Python仮想環境
  2. FeinCMSとその依存関係をインストールする

5. FeinCMSでの作業

  1. プロジェクトを作成する
  2. DjangoアプリとしてFeinCMSを開始する
  3. プロジェクトの設定を構成する(settings.py
  4. URLを構成します(urls.py
  5. 最初のモデルの作成
  6. データベースを開始する
  7. テンプレートの作成
  8. アプリケーションをテストする
  9. 最初のコンテンツを作成する

6. 生産の準備

7. 概要

Djangoの概要

Djangoは、Pythonプログラミング言語ベースのWeb開発フレームワークです。 非常に大規模なプロジェクトとライブラリであるため、すぐに開始することを楽しみにしている開発者に大量のツールと機能をパックして出荷します。

FeinCMS

FeinCMSは、技術的には単なるコンテンツ管理システムというよりもフレームワークです。 ツール自体は、多くの追加のアドオンを参照することなく、開発者がWebサイトを簡単に作成できるように、標準のDjangoに加えて、ヘルパーとともに多くの追加機能を備えた優れたベースを提供しようとします。

従来のCMSツールとは異なり、FeinCMSを使用するには、少し慣れが必要です。 ただし、これにより、特定の複雑なタスクをツールではるかに簡単に実行できるようになるため、柔軟性が大幅に向上します。 たとえば、FeinCMSを使用するには、データ型を定義する必要があります(つまり、 コンテンツデータ)およびそのような複雑な操作が必要な場合、これはアプリケーションを開発するためのツールになる可能性があります。

特に必要なものを取得するには、追加の作業を行う必要がありますが、すぐに使用できるすぐに使用できる管理領域など、FeinCMSのヘルパーは、カスタムコンテンツの管理に最適です。

FeinCMSの利点

  • 柔軟性:すべてのDjangoベースのCMSシステムの中で、FeinCMSは本質的に最も柔軟なシステムです。

  • カスタマイズ可能:すべてのコンテンツタイプはユーザーです(つまり、 開発者)作成および作成-したがって、FeinCMSを高度にカスタマイズ可能にします。

  • 十分に文書化されています:最高ではありませんが、FeinCMSの文書化は比較的優れています。

  • 豊富な機能: FeinCMSは、多くのタスクを伴う開発者から多くの複雑さを抽出します。

はじめに:Ubuntuドロップレットの準備

FeinCMSはPythonプロジェクトであり、Webサイトを確実にセットアップして実行するには、システムを正しく準備する必要があります。

VPSの準備ができていない場合は、Ubuntu/Pythonの記事にすばやくアクセスしてください。

そして、以下にあるFeinCMSのインストール手順に進みます。

FeinCMSのインストール

Python virtualenv を使用して、FeinCMSとその依存関係をインストールおよびセットアップします。 このセクションでは、環境の作成から始めて、それを続けます。

Python仮想環境

まだ作成していない場合は、仮想環境を作成します。

virtualenv feincms_env
cd         feincms_env

そして、環境をアクティブにします。

source bin/activate

FeinCMSとその依存関係をインストールする

次のコマンドを実行して、pipを使用してfeincms_envをインストールします。

pip install feincms

# Successfully installed feincms Django django-mptt Pillow feedparser

そして、使用したいデータベースドライバをインストールします。例:

# PostgreSQL:
# pip install psycopg2

# MySQL:
# pip install mysql-python

# Note: For additional DB drivers, remember
#       to install OS level DB packages.

FeinCMSでの作業

プロジェクトを作成する

FeinCMSでの作業は、通常のDjangoプロジェクトとほとんど同じです。

以下の手順に従って、新しいプロジェクトを作成します。

# Usage: django-admin.py startproject [project name]
# Example:
django-admin.py startproject feincms_app

# Enter the application directory:
cd feincms_app

DjangoアプリとしてFeinCMSを開始する

次に、作成した新しいDjangoプロジェクトを構成する前にDjangoアプリケーションとしてFeinCMSを開始する必要があります

以下を実行して、FeinCMSDjangoアプリを作成します。

python manage.py startapp cms

プロジェクトの設定を構成します( settings.py

Django CMSと同様に、作成したDjangoプロジェクトを構成する必要があります。 これは主に、FeinCMSをインストール済みアプリケーションとして追加し、使用するデータベースエンジンを決定することで構成されます。

nanoテキストエディタを使用してsettings.pyファイルを編集してみましょう。

nano feincms_app/settings.py

ファイルを下にスクロールして、INSTALLED_APPSというタイトルのセクションを見つけて変更します。

# From this:

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
)

# To this:

INSTALLED_APPS = (

    # FeinCMS:
    'feincms',
    'feincms.module.page',
    'feincms.module.medialibrary',
    'cms',

    # Django Standard:
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

)

注: django.contrib.adminがコメント化されている場合(#django.contrib.admin)、コメントアウトしてください。

次のステップは、TEMPLATE_CONTEXT_PROCESSORS設定を追加することです。

以下のコードブロックをファイルに追加します。

TEMPLATE_CONTEXT_PROCESSORS = (

    'django.contrib.auth.context_processors.auth',
    'django.contrib.messages.context_processors.messages',
    'django.core.context_processors.i18n',
    'django.core.context_processors.request',
    'django.core.context_processors.media',
    'django.core.context_processors.static',
        
)

事前構成されたデータベースエンジンはSQLite3です。 標準以外の別のものを使用したい場合は、ここでも構成および定義する必要があります。 ファイルを下にスクロールして、DATABASES構成ブロックを見つけます。 そこに到達したら、必要に応じて編集します。例:

# Default SQLite:
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}    
# PostgreSQL example:
# DATABASES = {
#     'default': {
#         'ENGINE': 'django.db.backends.postgresql_psycopg2',
#         'NAME': 'name',
#         'USER': 'user_name',
#         'PASSWORD': 'pwd',
#         'HOST': 'host.add.ress',
#         'PORT': '5432',
#     }
# }

データベースの設定が完了したら、いくつかのテンプレートディレクトリを定義します。

ファイルの適切な場所に次の行を追加します。

TEMPLATE_DIRS = (

    # List of template directories.
    # Example:
    os.path.join(BASE_DIR, 'templates'),

)

CTRL + Xを押し、Yで確定して、このファイルを保存して終了します。

URLを構成します(urls.py

以下を実行して、nanoを使用してurls.py構成ファイルを編集します。

nano feincms_app/urls.py

内容を以下のようなものに置き換えて、ニーズに合わせてください。

import os

from django.conf.urls import patterns, include, url
from django.conf.urls.i18n import i18n_patterns
from django.contrib import admin
from django.contrib.staticfiles.urls import staticfiles_urlpatterns

admin.autodiscover()

urlpatterns = patterns('',
    
    url(r'^admin/', include(admin.site.urls)),
    url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {
        'document_root': os.path.join(os.path.dirname(__file__), 'media/')}),
    url(r'', include('feincms.contrib.preview.urls')),
    url(r'', include('feincms.urls'))
    
) + staticfiles_urlpatterns()

CTRL+Xを押し、Yで確定して、ファイルを保存して終了します。

最初のモデルの作成

冒頭で述べたように、FeinCMSは、単純なすべて抽出されたCMSというよりもフレームワークです。 動作するには、モデルを定義する必要があります。 したがって、データベーススキーマを作成する前に、モデルを定義する必要があります。

以下のコマンドを実行して、作成したcmsDjangoアプリのmodels.pyの編集を開始します。

nano cms/models.py

そして、ファイルの内容を次のように置き換えて、新しいモデルを作成します。

from feincms.module.page.models import Page
from django.utils.translation import ugettext_lazy as _
from feincms.content.richtext.models import RichTextContent

Page.register_templates({
    'title': _('General FeinCMS Template Example'),
    'path': 'template1.html',
    'regions': (
        ('header', _('Page header.')),
        ('main', _('Main content area.')),
        ('sidebar', _('Sidebar'), 'inherited'),
        ('footer', _('Page footer.')),
    ),
})

Page.create_content_type(RichTextContent)

CTRL + Xを押し、Yで確定して、保存して終了します。

注:ページモデルの詳細については、公式ドキュメントで詳細な例を確認してください:FeinCMSページモジュール

データベースを開始する

構成が完了したら、データベースを開始してモデル/データベーススキーマを作成します。

以下を実行してデータベースを作成します。

python manage.py syncdb

このコマンドを実行すると、次のような一連の質問が表示されます。

# You just installed Django's auth system,
# which means you don't have any superusers defined.
# Would you like to create one now? (yes/no):
yes
# ^^ Create an admin account by answering the questions.
# For testing purposes you can opt for:
# Username: admin
# Password: admin

テンプレートの作成

前の手順でモデルをレンダリングするために使用するテンプレートモデルを作成しましょう。

テンプレートディレクトリを作成します。

mkdir feincms_app/templates

以下を実行して、nanoを使用して最初のテンプレートファイルを作成します。

nano feincms_app/templates/template1.html

そして、以下のテンプレートの内容をコピーして貼り付け、ニーズに合わせて変更します。

<div id="header">
    {% block header %}
    {% for content in feincms_page.content.header %}
        {{ content.render }}
    {% endfor %}
    {% endblock %}
</div>

<div id="content">
    {% block content %}
    {% for content in feincms_page.content.main %}
        {{ content.render }}
    {% endfor %}
    {% endblock %}
</div>

<div id="sidebar">
    {% block sidebar %}
    {% for content in feincms_page.content.sidebar %}
        {{ content.render }}
    {% endfor %}
    {% endblock %}
</div>

<div id="footer">
    {% block footer %}
    {% for content in feincms_page.content.footer %}
        {{ content.render }}
    {% endfor %}
    {% endblock %}
</div>

CTRL+Xを押し、Yで確定して、保存して終了します。

アプリケーションをテストする


次のコマンドを実行して、サンプルアプリケーションサーバーを実行します。

python manage.py runserver 0.0.0.0:8000

ドロップレットのFeinCMSの管理セクションにアクセスして、インストールを確認できます。

http://[your droplet's IP]:8000/admin

注:テストサーバーを終了するには、CTRL+Cを押します。

最初のコンテンツを作成する


次の場所に移動して、管理セクションにアクセスします。

http://[your droplet's IP]:8000/admin

設定した管理者資格でログインし、「ログイン」を押します。

注:ログインにはデフォルトを使用する必要がある場合があります-それぞれadminadmin

リストの「ページ」の横にある「追加」ボタンを押して、ページを作成します。

以上です!

生産の準備

Django CMSプロジェクトの作成が終了したら、アプリケーションに付属しているテストサーバーに依存しないようにする必要があります。

展開の場合、本格的なWebアプリケーションサーバー(例: Unicorn)を使用する必要があります。できれば、リクエストの初期処理と静的ファイル(画像など)の配布を処理するリバースプロキシの背後で使用する必要があります。

本番環境に移行する方法の全体像をすばやく把握するには、記事の「本番環境の準備」のセクションタイトルを確認してください:PythonWebアプリケーション用にUbuntuクラウドサーバーを準備する方法

概要

すでにこの記事を一度読んだことがある場合、またはコマンドを1つずつコピーして貼り付けるのが苦手な場合は、構成までの作業を開始するためのインストール手順の概要を以下に示します。

# Preare the system and install Python tools:
aptitude    update
aptitude -y upgrade
aptitude install -y build-essential
aptitude install -y cvs subversion git-core mercurial
aptitude install python-setuptools python-dev python2.7-dev python-software-properties libpq-dev
aptitude install libtiff4-dev libjpeg8-dev zlib1g-dev libfreetype6-dev liblcms2-dev libwebp-dev tcl8.5-dev tk8.5-dev
curl https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py | python -
curl https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python -
export PATH="/usr/local/bin:$PATH"
pip install virtualenv

# Create a virtual environment:
virtualenv feincms_env
cd feincms_env    
source bin/activate
pip install feincms

# Create a CMS project:
django-admin.py startproject feincms_app
cd feincms_app
python manage.py startapp cms

# And continue with configurations ..

投稿者: https ://twitter.com/ostezer