我用一个简单的中间件解决了这个问题。它还处理重定向(即,在重定向过程中保留GET参数)。这里是:
class ImpersonateMiddleware(object): def process_request(self, request): if request.user.is_superuser and "__impersonate" in request.GET: request.user = models.User.objects.get(id=int(request.GET["__impersonate"])) def process_response(self, request, response): if request.user.is_superuser and "__impersonate" in request.GET: if isinstance(response, http.HttpResponseRedirect): location = response["Location"] if "?" in location: location += "&" else: location += "?" location += "__impersonate=%s" % request.GET["__impersonate"] response["Location"] = location return response
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)