【发布时间】:2017-08-19 11:10:23
【问题描述】:
我想要实现的是,如果子域(租户)已注册,那么它应该显示一个不同的页面,否则正常执行。
我只是想用自定义中间件运行 django。到目前为止,get_response 在显示主页时返回 500 状态。
下面的异常返回'NoneType' object is not callable
如果用户是普通用户而不是租户,我希望应用程序正常运行。
我刚刚开始,但我想 get_response 函数是显示其他中间件执行的响应稍后会导致 500 状态。
任何帮助想弄清楚,我如何使用我的自定义中间件表示赞赏。
class TenantMiddleware(MiddlewareMixin):
def process_request(self, request):
absolute_url = request.get_full_path()
url = urlparse.urlparse(absolute_url)
print absolute_url
print url
subdomain = url.hostname.split(".") if url.hostname else None
if subdomain and subdomain != 'affectlab' :
if 'subdomain' not in request.session:
print "I am here"
tenant=map(lambda x : x[0],(list(profiles.models.Tenant.objects.filter(name=subdomain).values_list('id'))))
if tenant:
request.session['tenant'] = int(tenant[0])
request.session['subdomain'] = subdomain.strip()
return HttpResponseRedirect("/login/")
else:
response = render_to_response('404.html', {},context_instance=RequestContext(request))
response.status_code = 404
return response
else:
if request.session['subdomain'] == subdomain:
return self.get_response(request)
else:
tenant = map(lambda x: x[0],(list(profiles.models.Tenant.objects.filter(name=subdomain)).values_list('id')))
if tenant:
request.session['tenant'] = int(tenant[0])
request.session['subdomain'] = subdomain.strip()
response = logout(request) # ,next_page=reverse("/"))
return HttpResponseRedirect("/login/")
else:
response = render_to_response('404.html', {}, context_instance=RequestContext(request))
response.status_code = 404
return response
else:
try :
response = self.get_response(request)
except Exception as e:
print e.message
return response
【问题讨论】:
标签: django