与django-tenants注册后重定向到租户域?

时间:2019-12-21 13:06:02

标签: python django multi-tenant

我正在使用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})

2 个答案:

答案 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)