2016-06-15 41 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): 
    ... 

如果我的項目有以下這種結構,是放,mydb.pybackends目錄項目的文件夾下的最佳做法?

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'避免名稱空間衝突的合理標準嗎? djamgo配置的一般規則是,當前項目是否包含在python搜索路徑中?

+0

我不確定你在問什麼。把它放在你喜歡的地方,並在設置中使用該路徑。 –

回答

2

你應該把它稱作到文件:

SESSION_ENGINE = 'python.path.mydb' 

Django docs缺少這個小細節。在django/contrib/sessions/middleware.py線12(Django的1.9),你可以找到這樣的:

self.SessionStore = engine.SessionStore 

所以,從字面上你settings. SESSION_ENGINE提供引擎服用SessionStore類。