我正在使用 DJANGO 和 SQL 创建一个在线商店(我通过 pyodbc 连接到数据库,它工作正常)。
这是为了实验。我在他或她启动网站时分配参与者 ID。我如何在整个应用程序中记住该参与者 ID?
正如@Justin Russo 所说,会话和设置会话的中间件实际上是您唯一的选择。
因为您永远不知道某人将通过什么 url 模式/视图到达您的应用程序,所以我将在中间件中获取/设置此会话,该中间件可以对每个请求进行您需要的任何处理,而不考虑 url。
# settings.py
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'some_app_module.middleware.UserSession',
)
class UserSession(object):
def process_request(self, request):
x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
if x_forwarded_for:
ip = x_forwarded_for.split(',')[0]
else:
ip = request.META.get('REMOTE_ADDR')
request['user_session'] = request.session.get(ip, ip)
return request