Python中如何整合Django和AdminLTE框架

想在一个 Django 项目中使用 AdminLTE, 是修改 AdminLTE 为 template 呢, 还是做成前后端分离? 求建议
Python中如何整合Django和AdminLTE框架

13 回复

看项目吧我觉得,你这个是开源的吗。


要在Django项目中整合AdminLTE,最直接的方法是使用第三方包 django-adminlte3。它已经帮你把AdminLTE的模板、静态文件和Django的模板标签都打包好了。

首先,安装它:

pip install django-adminlte3

然后,在你的 settings.py 里进行配置:

# settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    ... # 其他应用
    'adminlte3',  # 添加这个
    'adminlte3_theme', # 可选,添加主题
]

# 设置默认模板后端
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR / 'templates'], # 你的模板目录
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                ...,
                'adminlte3.context_processors.adminlte', # 添加这个
            ],
        },
    },
]

接下来,创建一个基础模板文件 templates/base.html,继承自AdminLTE的布局:

<!-- templates/base.html -->
{% extends "adminlte/base.html" %}
{% load static i18n %}

{% block title %}我的项目{% endblock %}

{% block body_class %}sidebar-mini layout-fixed{% endblock %}

{% block body %}
    <div class="wrapper">
        <!-- 这里可以放置你的导航栏、侧边栏等 -->
        {% include 'adminlte/lib/_main_header.html' %}
        {% include 'adminlte/lib/_main_sidebar.html' %}

        <!-- 内容区域 -->
        <div class="content-wrapper">
            <section class="content">
                {% block content %}
                <!-- 你的页面主要内容放在这里 -->
                {% endblock %}
            </section>
        </div>

        <!-- 页脚 -->
        {% include 'adminlte/lib/_main_footer.html' %}
    </div>
{% endblock %}

最后,在你的视图模板中继承这个 base.html

<!-- templates/myapp/mypage.html -->
{% extends "base.html" %}

{% block content %}
    <h1>欢迎使用AdminLTE!</h1>
    <p>你的页面内容从这里开始。</p>
{% endblock %}

运行 python manage.py collectstatic 收集静态文件,然后启动服务器,你的Django后台就会使用AdminLTE的样式了。

总结:用 django-adminlte3 包是最快最省事的整合方式。

不是开源的

最近用 Django 和 xadmin 做后台管理系统,不过打算之后前后端分离来做

恩,xadmin 不怎么更新了, 不知道多 2.0 的 Django 支持怎么样?

作者已经弃坑开了个纯前端的 new-xadmin 分支。。。

实用性怎么样? 求安利

这个得关注下。AdminLTE 看上去挺不错的。但是感觉还是达不到那种开箱即用的地步,我这种小白要花很多时间去折腾

嗯,如果要用 template 得自己用 DTL 去修改 html

曾经尝试过这种玩法,后来放弃了,修改 template 的工作量太大。现在是前后端分离,用 vue 做前端,正好有个开源的项目 http://panjiachen.github.io/vueAdmin-template,基本上开箱即用。当然前后端分离会有些安全性问题,要严格控制好后端 api 的权限。

还没用过。。。

新鲜出炉,欢迎测试

回到顶部