SimpleUI:简单功能强大的开源后台管理系统

发布时间:2023-05-18

SimpleUI是一个基于Django框架开发的开源后台管理系统,其设计理念是提供一个简单易用但具备强大功能的后台系统解决方案,以助力后端开发者快速高效的开发产品。

一、SimpleUI重写模板

SimpleUI具备如此之高的易使用程度和强大的功能,这得益于其精美的前端 UI 设计以及实现高质量的界面渲染。SimpleUI强调简单,但并不代表妥协于视觉上的普通。比如,为了让用户更好地识别页面,SimpleUI对比度进行严格控制,使用不同颜色进行分割;在其他方面,如页面中的操作按钮、控件,SimpleUI都注重使用赏心悦目的设计元素。 下面是SimpleUI重写 Bootstrap 模板元素的示例代码:

/* 在 app/static/common/css/simpleui-basic.css 中重写 Bootstrap 全局 CSS 样式 */
/* 导航栏 */
.navbar {
    background-color: #453d47;
    border-color: #231F20;
}

二、SimpleUI自定义按钮

不同于其他后台管理系统,SimpleUI提供了很多自定义的按钮,这些按钮可以简化前端开发的流程。 下面是SimpleUI自定义按钮的示例代码:

<!-- 搜索按钮 -->
<button class="btn btn-sm btn-primary mr-2" id="search">搜索</button>
<!-- 投票按钮 -->
<button class="btn btn-sm btn-success mr-2" id="vote">投票</button>
<!-- 编辑按钮 -->
<button class="btn btn-sm btn-warning" id="edit">编辑</button>

三、SimpleUI四大功能模块

SimpleUI包含四大功能模块:数据管理、系统管理、用户管理、页面管理。下面详细介绍每个模块的特点:

1.数据管理

数据管理模块提供了多种数据类型的管理操作,包括数据增加、删除、修改以及搜索等操作。SimpleUI的数据管理模块内置了多种表格控件,支持多表联合查询、多条件搜索等操作。此外,SimpleUI还支持导入和导出数据的操作,比如导入Excel、CSV、JSON等格式数据,导出也同样可以支持这些格式。 下面是SimpleUI数据管理模块示例代码:

# 表格控件
from django.db.models import Q
from simpleui.views import ModelTableView
from app.models import User
class UserTableView(ModelTableView):
    model = User
    table_pagination = True
    table_pagination_limit = 10
    table_row_actions = [
        {
            "url": "app:user_detail",
            "text": "编辑"
        },
        {
            "url": "app:user_detail",
            "text": "删除",
            "confirm": "您确定要删除这个用户吗?"
        }
    ]
    table_search_fields = ["name", "email"]
    table_search_placeholder = "在这里输入关键词"
    table_filter_fields = ["gender"]
    table_filter_placeholder = "筛选"
    table_list_display = ["name", "email", "gender", "created", "updated"]

2.系统管理

系统管理模块提供了多种通用功能。例如搜索引擎管理、文件管理、站点内容管理等功能。同时,此模块还支持 Web 端访问日志查看和操作日志查看等实用功能。 下面是SimpleUI系统管理模块示例代码:

# 站点内容管理
from django.urls import reverse
from django.views.generic.list import ListView
from simpleui.views import FilterView
from app.models import Blog
class BlogListView(FilterView):
    model = Blog
    queryset = Blog.objects.published()
    template_name = "app/blog_list.html"
    paginate_by = 8
    context_object_name = "blog_list"
    filterset_fields = ["category"]
    ordering = ["-create_time"]
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context["category_chosen"] = self.request.GET.get("category")
        context["category_list"] = Category.objects.all()
        return context
    def get_absolute_url(self):
        return reverse("app:blog_list")

3.用户管理

用户管理模块提供了对网站用户的管理和操作。此模块支持了用户登录、用户注册、用户权限管理等操作。同时,也提供了角色管理模块,便于管理员对角色进行增删改查。 下面是SimpleUI用户管理模块示例代码:

# 用户登录
from django.shortcuts import render, redirect
from django.contrib.auth import authenticate, login
from app.forms import LoginForm
def user_login(request):
    if request.method == "POST":
        form = LoginForm(request.POST)
        if form.is_valid():
            username = form.cleaned_data.get("username")
            password = form.cleaned_data.get("password")
            user = authenticate(request, username=username, password=password)
            if user is not None:
                login(request, user)
                return redirect("app:index")
            else:
                form.add_error(None, "用户名或密码不正确")
    else:
        form = LoginForm()
    return render(request, "app/user_login.html", {"form": form})

4.页面管理

页面管理模块提供了生成静态网页的功能。使用模板和数据生成静态 HTML 文件,然后将文件保存在指定目录下。此模块功能十分强大,使用它可以极大地减轻服务器压力。 下面是SimpleUI页面管理模块示例代码:

# 静态网页生成
from django.conf import settings
from django.views.generic import TemplateView
from django.template import loader
from app.models import Post
import os
class PostPageView(TemplateView):
    template_name = "app/post.html"
    def get(self, request, pk, *args, **kwargs):
        post = Post.objects.get(pk=pk)
        context = {"post": post}
        content = loader.render_to_string(self.template_name, context=context)
        filename = f"{post.slug}.html"
        filepath = os.path.join(settings.BASE_DIR, "pages", filename)
        with open(filepath, "w", encoding="utf-8") as f:
            f.write(content)
        return super().get(request, *args, **kwargs)

总结

SimpleUI提供了全面的后台管理功能,对于中小型团队和个人开发者来说,它的确是一个更好的后台系统解决方案。借助 SimpleUI 强大的特性,开发者可以快速构建出自己的后台管理系统,在快速迭代中快速的推出产品。另外,SimpleUI 同时也是一款开源软件,其源码也公开给了开发者。强大的系统不仅在自身功能上具备优势,在开源社区中,其也收获了一大批忠实粉丝。如果你想更好更快地开发自己的后台系统,不妨尝试一下 SimpleUI。