我想对某些URL禁用Django中的自动 session 创建。我有/ api / *,每个点击的客户端都会获得一个新的Django session 。有没有办法忽略某些网址?
最佳答案
一个简单的解决方案是让您的Web服务器区分API调用和常规调用,然后使应用程序具有两个不同的WSGI实例:一个启用了 session ,另一个禁用了 session 。 (使用Nginx可能比使用Apache容易得多。)
一种替代方法是继承SessionMiddleware,然后编辑流程函数以忽略所有符合您条件的请求。就像是:
from django.contrib.sessions.middleware import SessionMiddleware
class MySessionMiddleware(SessionMiddleware):
def process_request(self, request):
if request.path_info[0:5] == '/api/':
return
super(MySessionMiddleware, self).process_request(request)
def process_response(self, request, response):
if request.path_info[0:5] == '/api/':
return response
return super(MySessionMiddleware, self).process_response(request, response)
然后编辑设置的文件,以使MIDDLEWARE_CLASSES包含“MySessionMiddleware”的路径,而不是“django.contrib.sessions.middleware.SessionMiddleware”的路径。
关于django - 禁用Django中的 session 创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4052473/