Python中如何整合Django和AdminLTE框架
想在一个 Django 项目中使用 AdminLTE, 是修改 AdminLTE 为 template 呢, 还是做成前后端分离? 求建议
Python中如何整合Django和AdminLTE框架
看项目吧我觉得,你这个是开源的吗。
要在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 的权限。
还没用过。。。
新鲜出炉,欢迎测试

