Python3
Django1.9

コピペで始めるDjango Oscor

More than 1 year has passed since last update.

前書き

理由

ドキュメントは有るけど、ハマらないようにまとめました。

前提

Mac OS X / macOS

※Linux OSやWindowsの人は適宜読み替えてください。

Django Oscarとは?

Djangoで動かせるショッピングサイトです。

ドキュメント

https://django-oscar.readthedocs.io/en/releases-1.2/internals/getting_started.html

インストール

前提

すでにDjango 1.9やPython 3がインストールされている。
virtualenvなどで入ってるとなお良い。

オープンソースなのでgit上にあるので以下のようにやると思いますが、違います。
Django自体のプロジェクトは自分で作成してOscor自体はモジュール的に使います。

x悪い例
git clone https://github.com/django-oscar/django-oscar

1. まず本体を入れます。

良い例
pip install django-oscar

2. ドキュメントにしれっと書かれていたこれらも入れておきます。

pip install django_compressor
pip install pysolr

django_compressorとは?

Oscorがサポートしているテンプレートエンジンです。
オプションなのでなくてもいいようですが、入れておきます。
django-widget-tweaksもテンプレートエンジンなのですが、django-oscarをpipに入れるときに勝手に入る模様・・。

pysolrとは?

Apache Solr(ソーラー)」(以下、Solr)というオープンソースの検索エンジンで、これをPythonで動かすものです。

3. Solrのインストールや起動

brew install solr

Solr起動の準備

Solrのログ用フォルダの作成

mkdir -p /usr/local/Cellar/solr/6.1.0/example/logs/

6.1.0の部分は今回インストールしたものによって違うので自分の環境に合わせてください。

solr startで起動。以下のようなログが出ます。

$ solr start
Waiting up to 30 seconds to see Solr running on port 8983 [\]
Started Solr server on port 8983 (pid=40099). Happy searching!

4. Djangoプロジェクト作成

コマンドで生成します.frobshopはプロジェクト名になるのでご自身の希望で変えましょう。

django-admin.py startproject frobshop

スーパーユーザーも作っておきましょう。

python manage.py createsuperuser

5. settings.py設定

今回はfrobshopプロジェクトなのでパスはご自身環境に合わせて下さい。
※「追加」のところを参照に追加してください。

※もし、コメントアウトなどで日本語を含めたいときはコレを一番上に書いてください。

frobshop/frobshop/settings.py
# -*- coding: utf-8 -*-

一番上の方に以下を追加locationを忘れないように!
```python:frobshop/frobshop/settings.py
import os
from oscar.defaults import * # 追加

# 追加
location = lambda x: os.path.join(
os.path.dirname(os.path.realpath(file)), x)
```

アプリケーション系の設定
SITE_ID = 1を忘れるとあとでadminに入れなくなるので忘れ得ないように

frobshop/frobshop/settings.py
from oscar import get_core_apps # 追加

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites', # 追加
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.flatpages',
    'compressor', # 追加
    'widget_tweaks', # 追加
] + get_core_apps() # 追加


SITE_ID = 1 # 追加

MIDDLEWARE_CLASSES = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',

    'oscar.apps.basket.middleware.BasketMiddleware', # 追加
    'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware', # 追加
]

テンプレート系

frobshop/frobshop/settings.py
from oscar import OSCAR_MAIN_TEMPLATE_DIR # 追加

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [ # 追加
            os.path.join(BASE_DIR, 'templates'),
            OSCAR_MAIN_TEMPLATE_DIR
        ],
        'APP_DIRS': True,
        'OPTIONS': {

DATABASESの項目の下の方に以下をまるごと追加

frobshop/frobshop/settings.py
# 追加
HAYSTACK_CONNECTIONS = {
    'default': {
        'ENGINE': 'haystack.backends.solr_backend.SolrEngine',
        'URL': 'http://127.0.0.1:8983/solr',
        'INCLUDE_SPELLING': True,
    },
}

一番下の方にSTATIC_URLSTATIC_ROOTを。

frobshop/frobshop/settings.py
STATIC_URL = '/static/'

# 追加
STATIC_URL = '/static/'
STATIC_ROOT = location('public/static')

6. urls.py設定

※もし、コメントアウトなどで日本語を含めたいときはコレを一番上に書いてください。

frobshop/frobshop/urls.py
# -*- coding: utf-8 -*-

includeを追加します。urlはデフォルトで入ってます。

frobshop/frobshop/urls.py
from django.conf.urls import include, url # 追加
urlpatterns = [
    url(r'^i18n/', include('django.conf.urls.i18n')), # 追加
    url(r'^admin/', admin.site.urls),

    url(r'', include(application.urls)), # 追加
]

6. マイグレーションです。

python manage.py migrate

7. 起動

python manage.py runserver

http://localhost:8000/にアクセスしましょう。

管理画面はhttp://localhost:8000/adminですが、
エラーが出るときはSITE_ID = 1を忘れてますね。

何か質問があれば、書き込めば答えれるかもしれませんね。