如果我想对一个模块进行子类化,以便django.contrib.sessions.backends.db.SessionStore我可以覆盖它的许多默认行为,那么在 Django 中执行此操作的标准方法是什么?
假设我创建一个名为mydb.py:
from django.contrib.sessions.backends.db import SessionStore as DBSessionStore
class SessionStore(DBSessionStore):
...
Run Code Online (Sandbox Code Playgroud)
如果我的项目具有以下结构,那么最好的做法是将其放在项目文件夹下的目录mydb.py中吗?backends
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
Run Code Online (Sandbox Code Playgroud)
settings.SESSION_ENGINE='backends.db'避免命名空间冲突的合理标准是吗?当前项目包含在python搜索路径中是djamgo配置的一般规则吗?
您应该将其称为文件:
SESSION_ENGINE = 'python.path.mydb'
Run Code Online (Sandbox Code Playgroud)
Django 文档缺少这个小细节。在 https://docs.djangoproject.com/en/2.2/_modules/django/contrib/sessions/middleware/第 12 行(django 1.9)中,您可以找到以下内容:
self.SessionStore = engine.SessionStore
Run Code Online (Sandbox Code Playgroud)
因此,它实际上是从您在 中提供的引擎中获取 SessionStore 类settings. SESSION_ENGINE。
| 归档时间: |
|
| 查看次数: |
2319 次 |
| 最近记录: |