Django xadmin安装及使用详解

Django xadmin安装及使用详解

介绍

Django xadmin是一款基于Django的后台管理框架,可以快速构建自己的后台管理系统。它还提供了丰富的插件,扩展了Django原生后台的功能。

安装

1. 安装依赖

Django xadmin需要Pillow模块,安装命令如下:

pip install Pillow

2. 安装xadmin

使用pip命令安装:

pip install xadmin

3. 配置

在Django的settings.py文件中添加xadmin和crispy_forms的应用:

INSTALLED_APPS = [
    ...
    'xadmin',
    'crispy_forms',
    ...
]

在生成URL时,需要使用xadmin中的urls,因此将原来的后台url替换为xadmin的url:

from django.urls import path, include

urlpatterns = [
    ...
    path('xadmin/', include('xadmin.urls')),
    ...
]

4. 运行

执行python manage.py runserver命令,打开浏览器访问http://127.0.0.1:8000/xadmin/,即可进入到xadmin的后台管理系统。默认的管理员账号是admin,密码是admin

使用

1. 自定义模型

在xadmin中,我们可以使用@xadmin.register装饰器装饰我们的模型类,例如:

from django.db import models
import xadmin

class Book(models.Model):
    name = models.CharField(max_length=30)
    author = models.CharField(max_length=30)

    def __str__(self):
        return self.name

    class Meta:
        verbose_name_plural = "书籍"

@xadmin.sites.register(Book)
class BookAdmin:
    pass

以上代码自定义了一个模型类Book,并使用@xadmin.register装饰器将其注册到xadmin中,类BookAdmin继承自object,使用pass占位。

2. 自定义模型字段

在xadmin中,我们可以控制每个字段的显示效果,比如添加验证规则、修改标签等。例如:

@xadmin.sites.register(Book)
class BookAdmin:
    list_display = ['name', 'author']

    form_layout = (
        Fieldset(
            '基础信息',
            Row('name', 'author'),
        ),
    )

以上代码定义了将nameauthor字段放在同一行显示。

示例

下面通过一个具体的例子来演示xadmin的使用。

示例:图书管理

我们定义一个Book模型,包括图书名称和作者两个属性,其操作可以分为增删改查四个部分。

1. 创建模型

from django.db import models

class Book(models.Model):
    name = models.CharField(max_length=30)
    author = models.CharField(max_length=30)

    def __str__(self):
        return self.name

    class Meta:
        verbose_name_plural = "书籍"

定义完成后,将其注册到xadmin。

import xadmin
from .models import Book

@xadmin.sites.register(Book)
class BookAdmin:
    pass

2. 查看功能

为了查看图书的详细信息,我们需要添加list_display属性,指定需要显示的字段。

class BookAdmin:
    list_display = ['id', 'name', 'author']

之后查看后台就可以看到id、name、author三个属性的列。

3. 添加功能

为了添加图书,我们需要在xadmin的后台页面点击「+添加」,跳转到添加页面,进行相应信息的填写。

class BookAdmin:
    list_display = ['id', 'name', 'author']
    fields = ['name', 'author']

以上代码定义了BookAdmin后台管理界面新增图书时,需要提供哪些字段的输入框。此时,添加页面上会显示名称和作者两个输入框,可以对它们进行输入并保存。

4. 编辑功能

用户可以通过在list_display中设置编辑按钮,进入编辑页面来修改已有图书。

class BookAdmin:
    list_display = ['id', 'name', 'author', 'edit']

    def edit(self, obj):
        return '<a href="/xadmin/book/%s/change/">编辑</a>' % obj.id

    edit.short_description = '操作'
    edit.allow_tags = True

以上代码设置了「操作」列,即编辑按钮。在 edit 方法中返回一个链接,这个链接跳转到编辑页面。

5. 删除功能

在xadmin中,我们可以通过自定义一个 action 来实现批量删除功能。

class BookAdmin:
    list_display = ['id', 'name', 'author', 'edit']
    actions = ['delete_selected']

    def delete_selected(self, request, queryset):
        queryset.delete()

    delete_selected.short_description = '删除所选项'

以上代码定义了可以批量删除所选图书的 delete_selected 方法。用户在后台管理界面选择要删除的图书,点击「删除所选项」,执行删除方法即可实现批量删除。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Django xadmin安装及使用详解 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • MySQL跨服务器关联查询的实现

    MySQL跨服务器关联查询,常常用于多个MySQL数据库之间的数据分析与整合。下面是实现跨服务器关联查询的完整攻略: 确认服务器间网络配置 在两个MySQL数据库之间进行跨服务器查询时,需要确保两个服务器间的网络已经配置正确,可以通过ping命令测试另一个服务器是否能够响应。 确认MySQL服务器权限配置 首先需要确保MySQL服务器的权限配置正确,保证查询…

    database 2023年5月22日
    00
  • Oracle实现动态SQL的拼装要领

    当我们需要根据一些动态情况来构建sql查询语句时,动态SQL的拼装就非常有用了。在Oracle中,可以通过使用动态SQL来拼接实现动态查询。下面是实现动态SQL的拼装要领: 步骤一:定义动态SQL 使用EXECUTE IMMEDIATE语句来定义动态SQL。 DECLARE sql_text VARCHAR2(200); BEGIN sql_text:= ‘…

    database 2023年5月21日
    00
  • MySQL中进行跨库查询的方法示例

    MySQL中进行跨库查询的方法有两种,分别是联合查询和使用临时表。下面将详细讲解这两种方法的使用示例。 联合查询 联合查询是将多个SELECT语句的结果合并成一个结果集。下面的示例展示了如何使用联合查询进行跨库查询。 SELECT * FROM `database1`.`table1` UNION ALL SELECT * FROM `database2`.…

    database 2023年5月21日
    00
  • Linux安装Redis步骤和make遇到的坑

    Linux安装Redis服务步骤 1.获取redis资源 ​​​​​​​cd /usr/local wget https://mirrors.huaweicloud.com/redis/redis-6.0.10.tar.gz 2.解压 tar xzvf redis-6.0.10.tar.gz 3.安装 cd redis-6.0.10 make cd src …

    Redis 2023年4月13日
    00
  • Oracle RAC环境下的阻塞(blocking blocked)介绍和实例演示

    我来为您讲解“Oracle RAC环境下的阻塞(blocking blocked)介绍和实例演示”的完整攻略。 简介 在Oracle RAC环境下,阻塞(blocking)是数据库系统中比较常见的问题之一,如果处理不当,会严重影响数据库的性能和稳定性。本文将对Oracle RAC环境下的阻塞问题进行介绍,并通过实例演示来说明如何解决这个问题。 Oracle …

    database 2023年5月21日
    00
  • Springboot mybais配置多数据源过程解析

    下面就详细讲解“Springboot mybais配置多数据源过程解析”的完整攻略。 一、引入依赖 首先,我们需要在pom.xml文件中引入相关的依赖,具体如下: <dependencies> <!–SpringBoot启动器–> <dependency> <groupId>org.springframew…

    database 2023年5月18日
    00
  • MySQL Workbench操作方法是什么

    这篇“MySQL Workbench操作方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MySQL Workbench操作方法是什么”文章吧。 Mysql Work Space 右键新建的数据库BMI,设置为此次连接的默认数据库,接下来…

    MySQL 2023年4月11日
    00
  • CentOS 下 Redis 2.2 安装配置详解

    一. 关于 Redis Redis是一种高级 key-value 数据库。它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富。它在保持键值数据库简单快捷特点的同时,又吸收了部分关系数据库的优点。从而使它的位置处于关系数据库和键值数据库之间。Redis不仅能保存Strings类型的数据,还能保存Lists类型(有序)和Sets类型(无序)…

    Redis 2023年4月11日
    00
合作推广
合作推广
分享本页
返回顶部