【问题标题】:Can Django Tenant Schema work with Django Rest Framework?Django Tenant Schema 可以与 Django Rest Framework 一起使用吗?
【发布时间】:2019-11-14 05:55:10
【问题描述】:

我正在使用 Django、Django Tenant Schema 和 Django Rest Framework 创建一个 SaaS 应用程序。在没有 API 的情况下一切正常,但我在通过 API 调用向不同租户发送获取请求时遇到问题。即使我指定了子域,它也会返回数据库中所有租户的用户。

但是,对无 API 端点的 get 请求可以正常工作,事实上,在 API 端点之外完成的所有操作都可以正常工作。

例如:

http://goldlimited.localhost:8000/dashboard/api/users

返回与

相同的信息

http://missinglinkgm.localhost:8000/dashboard/api/users

视图是一个基本的 ModelViewSet

class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.filter()
    serializer_class = UserSerializer

序列化器

class UserSerializer(ModelSerializer):

    class Meta:
        model = User
        exclude = ("password",)

还有路线

router = routers.DefaultRouter()
router.register('user', UserViewSet, 'user')

我想知道是否缺少使 DRF 与 Django Tenant Schema 一起使用的配置。

【问题讨论】:

  • 我最近在使用 DRF 的项目中添加了 django-tenants,但我没有看到您描述的问题,来自一个租户的模型实例没有显示在另一个租户的响应中。我的SHARED_APPS 下列出了django-rest-framework。你能发布你的MIDDLEWARE 设置是什么样的吗?
  • 我发现我使用的是旧的 django-tenant 模式项目。我切换到有积极支持的新项目,现在工作正常。

标签: python django


【解决方案1】:

是的,它确实有效,对 settings.py 稍作调整就可以了。确保将rest_framework 添加到已安装,租户 APPS。


SHARED_APPS = [
    'tenant_schemas',
    'Client',
    'django.contrib.contenttypes',

    # include below if you need admin panel on main site(public schema)    
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.sessions',
    'django.contrib.messages',

    # include other apps here
    # 'rest_framework' # if needed or if you're handling auth 
]

TENANT_APPS = [
    'django.contrib.contenttypes',

    # include below if you need admin panel on every tenant    
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.sessions',
    'django.contrib.messages',

     # include other apps here
    'rest_framework', # mandatory
]

【讨论】:

    猜你喜欢
    • 2020-06-01
    • 2019-08-06
    • 1970-01-01
    • 2015-03-29
    • 2012-08-02
    • 2016-09-11
    • 2018-03-23
    • 2010-12-12
    • 1970-01-01
    相关资源
    最近更新 更多