Django 基础教程

Django 查询

Django 展示数据

Django Admin

Django 模板

Django 表单组件

Django 高级

Django FAQ

django admin 自定义页面


在 Django 中,你可以通过自定义 admin 页面来扩展和改进 Django 默认提供的管理界面。下面是一个详细的步骤流程,帮助你创建自定义的 Django admin 页面,并结合示例代码进行说明:

假设你有一个 Django 项目,其中有一个名为"myapp"的应用,你想要在 admin 界面中创建一个自定义页面来展示特定的数据。

步骤 1:创建一个自定义视图函数

首先,你需要创建一个自定义的视图函数,该函数将处理数据并渲染页面。在你的应用的 views.py 文件中,添加以下代码:

# myapp/views.py

from django.shortcuts import render
from django.contrib.admin.views.decorators import staff_member_required

@staff_member_required
def custom_admin_page(request):
    # 在这里处理你的数据逻辑,比如从数据库中获取数据
    data = ["Item 1", "Item 2", "Item 3"]

    context = {
        'data': data,
    }

    return render(request, 'admin/custom_page.html', context)

这里我们使用了 @staff_member_required 装饰器,确保只有管理员用户可以访问这个页面。你可以根据自己的需求添加更多的逻辑。

步骤 2:创建模板文件

接下来,你需要创建一个模板文件来渲染页面。在你的应用的 templates/admin 文件夹下,创建一个名为 custom_page.html 的文件,并添加以下示例代码:

{% extends 'admin/base.html' %}

{% block content %}
  <div class="custom-page">
    <h2>Custom Admin Page</h2>
    <ul>
      {% for item in data %}
        <li>{{ item }}</li>
      {% endfor %}
    </ul>
  </div>
{% endblock %}

这个模板文件继承自 Django admin 的 base.html,然后在 content 块中定义了你的自定义页面的内容。

步骤 3:添加 URL 映射

现在,你需要将你的自定义视图映射到一个 URL 上,以便在 admin 界面中访问。在你的应用的 urls.py 文件中,添加以下代码:

# myapp/urls.py

from django.urls import path
from . import views

urlpatterns = [
    # 其他URL映射...
    path('custom-admin-page/', views.custom_admin_page, name='custom_admin_page'),
]

这将把你的自定义视图函数映射到 /admin/custom-admin-page/ 这个 URL 上。

步骤 4:更新 Admin 配置

最后,你需要在你的应用的 admin.py 文件中更新 Django admin 的配置,以便在左侧导航栏中添加一个链接到你的自定义页面。示例如下:

# myapp/admin.py

from django.contrib import admin
from .models import YourModel

class YourModelAdmin(admin.ModelAdmin):
    # 自定义的ModelAdmin配置...

admin.site.register(YourModel, YourModelAdmin)

# 添加自定义页面链接
class MyAdminSite(admin.AdminSite):
    site_header = 'My Custom Admin'
    site_title = 'My Custom Admin'

    def get_urls(self):
        from django.urls import path
        urls = super().get_urls()
        custom_urls = [
            path('custom-admin-page/', self.admin_view(views.custom_admin_page), name='custom_admin_page'),
        ]
        return custom_urls + urls

custom_admin_site = MyAdminSite(name='custom_admin')

# 将你的Model注册到自定义Admin Site
custom_admin_site.register(YourModel, YourModelAdmin)

在这个示例中,我们创建了一个自定义的 AdminSite,并通过 get_urls 方法添加了一个指向我们之前创建的自定义页面的链接。同时,我们还将 YourModel 注册到了这个自定义的 Admin Site 中。

完成了上述步骤后,你可以在 Django admin 界面中看到左侧导航栏中添加了一个链接,点击链接将会进入你自定义的 admin 页面,展示你在视图函数中处理的数据。

请注意,这只是一个基本的示例,你可以根据你的需求进一步定制和扩展你的自定义页面和功能。

自定义Admin页面的实现方式使用自定义模板通过创建自定义的HTML模板来修改Admin页面的外观和布局。html中继承Django自带的A ...
在Django中,我们可以自定义错误页面,使其在应用程序遇到错误时显示更友好和个性化的页面。py文件中,添加如下代码:现在,当应用程序遇到对 ...
DjangoAdmin是DjangoWeb框架提供的一个功能强大的自动生成后台管理界面的工具。MVT和MVC(Model-View-Cont ...
在这个例子中,我将展示如何创建一个基本的Django-Vue管理界面,其中Django作为后端API,而Vue.###步骤1:Django后 ...
##重定向(Redirect)方式跳转页面重定向是一种常见的页面跳转方式,它会将用户从当前页面导航到另一个页面。它可以带参数,并且在Djan ...