2016-06-15 15 views
0

django.contrib.sessions.backends.db.SessionStoreのようなモジュールをサブクラス化して、多くのデフォルト動作を上書きできるようにするには、Djangoでこれを行う標準的な方法は何ですか?djangoプロジェクトのカスタムセッションストアを作成する

私はmydb.pyというファイルを作成するとします。

from django.contrib.sessions.backends.db import SessionStore as DBSessionStore 

class SessionStore(DBSessionStore): 
    ... 

私のプロジェクトは、以下のこのような構造を持っている場合、プロジェクトのフォルダの下backendsディレクトリに、mydb.pyを置くことがベストプラクティスですか?

myproject 
myproject/manage.py 
myproject/myproject 
myproject/myproject/wsgi.py 
myproject/myproject/__init__.py 
myproject/myproject/settings.py 
myproject/myproject/urls.py 
myproject/db.sqlite3 
myproject/myapp 
myproject/myapp/tests.py 
myproject/myapp/admin.py 
myproject/myapp/__init__.py 
myproject/myapp/models.py 
myproject/myapp/apps.py 
myproject/myapp/migrations 
myproject/myapp/migrations/__init__.py 
myproject/myapp/views.py 
myproject/myapp/urls.py 
myproject/backends 
myproject/backends/__init__.py 
myproject/backends/mydb.py 
myproject/__init__.py 

settings.SESSION_ENGINE='backends.db'は名前空間の衝突を避けるための妥当な基準ですか?現在のプロジェクトがPythonの検索パスに含まれているのはdjamgo設定の一般的なルールですか?あなたは、ファイルへのとしてそれを参照する必要があります

+0

あなたが何を求めているのか分かりません。あなたが好きな場所に置いて、設定でそのパスを使用します。 –

答えて

2

SESSION_ENGINE = 'python.path.mydb' 

Django docsは、この小さなディテールが欠落しています。 django/contrib/sessions/middleware.pyライン12(1.9ジャンゴ)では、あなたはこれを見つけることができます:だからそれは文字通りあなたがsettings. SESSION_ENGINEに備えたエンジンからセッションストアクラスを取っ

self.SessionStore = engine.SessionStore 

関連する問題