django admin 添加自定义链接方式

1. 介绍

在Django后台管理界面(admin)中,提供了很多默认的功能和链接,方便对数据库进行操作和管理。但是有时候我们需要添加自定义的链接,以扩展和增强后台管理界面。

本文将重点介绍如何在Django admin中添加自定义链接的方式。

2. 准备工作

在开始之前,需要确保已经创建了一个Django项目,并在其中创建了至少一个app。

3. 创建自定义链接

3.1 修改admin.py文件

首先,在app的目录下找到admin.py文件,如果没有则需要手动创建该文件。

在admin.py文件中导入需要的模块和类:

from django.contrib import admin

from django.urls import reverse

from django.utils.html import format_html

然后,定义一个新的类,继承自admin.ModelAdmin:

class MyModelAdmin(admin.ModelAdmin):

def change_view(self, request, object_id, form_url='', extra_context=None):

extra_context = extra_context or {}

extra_context['my_custom_link'] = self.get_custom_link(object_id)

return super().change_view(request, object_id, form_url, extra_context=extra_context)

def get_custom_link(self, object_id):

custom_link = reverse('admin:myapp_mymodel_custom_link', args=(object_id,))

return custom_link

def my_custom_link(self, obj):

custom_link = self.get_custom_link(obj.pk)

return format_html('<a href="{}">Custom Link</a>', custom_link)

my_custom_link.short_description = 'Custom Link'

在上述代码中,我们定义了一个自定义的admin.ModelAdmin类MyModelAdmin。其中,change_view()方法用于修改Change视图,在显示Change页面的时候会添加一个自定义链接。get_custom_link()方法用于获取自定义链接的URL。my_custom_link()方法用于生成链接的HTML代码。这里我们使用了reverse()函数来获取URL。

3.2 修改urls.py文件

接下来,在项目的urls.py文件中添加一个URL映射:

from django.urls import path

from myapp.views import custom_link_view

urlpatterns = [

# 其他URL映射

path('myapp/mymodel//custom_link/', custom_link_view, name='myapp_mymodel_custom_link'),

]

这里我们定义了一个名为myapp_mymodel_custom_link的URL,对应的视图函数为custom_link_view。

3.3 编写视图函数

在myapp的views.py文件中,编写custom_link_view函数:

from django.http import HttpResponse

def custom_link_view(request, object_id):

# 自定义链接的逻辑代码

return HttpResponse("Custom Link View")

这里我们暂时只返回一个简单的HTTP响应,实际项目中可以根据需要编写自己的逻辑代码。

4. 注册自定义类

最后一步是在admin.py文件中注册我们定义的自定义类:

from myapp.models import MyModel

admin.site.register(MyModel, MyModelAdmin)

5. 查看效果

运行Django开发服务器,并在浏览器中访问admin管理界面。打开MyModel的Change页面,会发现多了一个名为Custom Link的链接。

点击该链接,会跳转到我们定义的custom_link_view视图函数对应的URL,并显示"Custom Link View"。

后端开发标签