You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django Admin的List_view中添加可点击链接以跳转至自定义HTML页面

嘿,你已经搞定了最关键的几个环节啦!接下来只需要在Django Admin的配置类里做简单调整,就能在列表视图里添加这个跳转链接,完全不用在models.py里额外写方法(当然也可以那么做,但在Admin配置里直接处理更直观)。

具体步骤:

找到你对应Transaction模型的Admin配置类(如果还没创建,就新建一个),在里面定义一个生成链接的方法,用Django提供的工具来安全构造URL:

from django.contrib import admin
from django.urls import reverse
from django.utils.html import format_html
from .models import Transaction

class TransactionAdmin(admin.ModelAdmin):
    # 把自定义的print_link字段加到列表展示的字段里
    list_display = ('id', '这里替换成你的其他展示字段', 'print_link')

    def print_link(self, obj):
        # 用reverse根据urls.py里定义的name生成对应URL,自动传入transaction_id参数
        detail_url = reverse('transaction_print', args=[obj.id])
        # 返回带跳转链接的HTML,用format_html确保安全渲染(避免XSS风险)
        return format_html('<a href="{}" target="_blank">查看/打印交易详情</a>', detail_url)
    
    # 给这个自定义列设置表头显示名称,不然默认会显示方法名print_link
    print_link.short_description = '操作'

# 注册模型和对应的Admin配置
admin.site.register(Transaction, TransactionAdmin)

几个关键点说明:

  • reverse函数:它会根据你在urls.py里设置的name='transaction_print'自动生成正确的URL路径,不用硬写链接,后期修改URL规则也不用改这里。
  • format_html:一定要用这个函数来生成HTML内容,而不是直接拼接字符串,它会自动转义不安全的字符,避免XSS攻击。
  • target="_blank":让链接在新标签页打开,用户不用离开Admin页面,体验更友好,不需要的话可以删掉。
  • 路径包含检查:确保你app的urls.py已经被包含到项目主urls.py里了,比如主urls.py里有类似这样的配置:
    from django.urls import include, path
    
    urlpatterns = [
        # ...其他路径
        path('calculator/', include('calculator.urls')),
    ]
    

这样配置完之后,刷新Admin的Transaction列表页面,就能看到新增的“操作”列,点击里面的链接就会跳转到你写的report.html页面啦~

内容的提问来源于stack exchange,提问作者Abdulla Osama

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 06:12:32