You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Apache Superset作为应用集成至Django项目中?

将Superset集成到Django项目作为子应用的实现方案

前置准备

  • 已完成Django项目搭建,Python版本建议3.8-3.10(匹配Superset 2.x的兼容要求)
  • 安装Superset及依赖:pip install apache-superset

核心配置步骤

1. 配置Django Settings

打开项目根目录下的settings.py,添加以下配置:

  • 将Superset相关应用加入INSTALLED_APPS:
INSTALLED_APPS = [
    # 原有Django内置/自定义应用
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # Superset核心及依赖应用
    'superset',
    'django_celery_results',
    'django_celery_beat',
]
  • 配置数据库:Superset可复用Django现有数据库,或单独配置(示例为PostgreSQL):
# 复用Django数据库无需额外配置,若单独配置Superset数据库:
SUPERSET_DB = {
    'ENGINE': 'django.db.backends.postgresql',
    'NAME': 'superset_db',
    'USER': 'db_user',
    'PASSWORD': 'db_password',
    'HOST': 'localhost',
    'PORT': '5432',
}
  • 配置静态文件目录:指定Superset静态文件路径,方便Django收集:
import os
from pathlib import Path

BASE_DIR = Path(__file__).resolve().parent.parent

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
    # 替换pythonX.X为你的Python版本(如python3.9)
    os.path.join(BASE_DIR, 'venv/lib/pythonX.X/site-packages/superset/static'),
]

2. 挂载Superset路由到Django

打开项目根目录下的urls.py,将Superset的路由挂载到指定路径(如/superset/):

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    # 挂载Superset路由
    path('superset/', include('superset.urls')),
]

3. 初始化Superset数据库

执行以下命令完成Superset的数据库初始化:

  • 迁移Superset数据库表:
superset db upgrade
  • 创建Superset管理员账号:
superset fab create-admin
  • (可选)加载Superset示例数据:
superset load_examples
  • 初始化Superset权限体系:
superset init

4. 整合Django与Superset用户认证

实现Django用户与Superset用户同步,避免重复登录:

  • 在settings.py中添加认证后端:
AUTHENTICATION_BACKENDS = [
    'django.contrib.auth.backends.ModelBackend',
    'superset.security.SupersetBackend',
]
  • 编写信号实现用户自动同步:在自定义应用下创建signals.py:
from django.db.models.signals import post_save
from django.contrib.auth.models import User
from django.dispatch import receiver
from superset.models.core import User as SupersetUser

@receiver(post_save, sender=User)
def sync_django_to_superset_user(sender, instance, created, **kwargs):
    if created:
        SupersetUser.objects.create(
            username=instance.username,
            email=instance.email,
            first_name=instance.first_name,
            last_name=instance.last_name,
            password=instance.password,
            active=True
        )
  • 在应用的apps.py中注册信号:
from django.apps import AppConfig

class YourAppConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'your_app_name'

    def ready(self):
        import your_app_name.signals

注意事项

  • 版本兼容性:优先选择Superset 2.x + Django 3.2/4.x组合,避免版本冲突
  • 静态文件收集:生产环境必须执行python manage.py collectstatic,将Superset静态文件统一收集到Django静态根目录
  • Celery配置:Superset依赖Celery处理异步任务(如报表生成),需配置Celery及消息队列(Redis/RabbitMQ)
  • 安全加固:生产环境启用HTTPS,通过Django的权限系统限制Superset路径的访问范围,避免未授权用户操作

内容的提问来源于stack exchange,提问作者Shamsan Mohammed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 13:55:11