我正在使用django-tenants库,其中的每个租户都是一个单独的隔离的postgres模式。 django租户模块完成了许多繁重的工作,我得到了以下代码,每次有人注册时都会创建一个新的租户。我关心的是schema_context
函数内部,该函数成功地在新创建的架构中创建了一个用户,但是我关心的是如何登录该用户并将其重定向到customname.my-domain.com
,如下所示:>
class SignupView(View):
def get(self, request):
form = RegistrationForm()
return render(request, "accounts/signup.html", {"form": form})
def post(self, request, *args, **kwargs):
form = RegistrationForm(request.POST)
if form.is_valid():
instance = form.save(commit=False)
tenant = Client(domain_url=company + ".my-domain.com", schema_name=company, name=company, paid_until="2019-05-10", on_trial=False)
tenant.save()
with schema_context(tenant.schema_name):
instance.save()
# login(request, instance) - how do I login this user
# render.... and redirect them to the newly created domain e.g company.my-domain.com
return render(request, "accounts/signup.html", {"form": form})
答案 0 :(得分:0)
我是Django Tenant的维护者。由于租户可能需要一些时间来设置,因此建议您使用芹菜来创建租户。设置租户后,我会向用户发送电子邮件以验证其帐户/租户,并将其带给租户。
答案 1 :(得分:0)
我以这种方式解决了这个问题。
subdomain = form.cleaned_data["subdomain"]
host = request.META.get('HTTP_HOST', '')
scheme_url = request.is_secure() and "https" or "http"
url = f"{scheme_url}://{subdomain}.{host}"
return HttpResponseRedirect(url)