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

Django自定义AdminSite如何在TemplateView模板中添加访问链接?

问题描述

在Django 5.0.2中已定义自定义AdminSite并关联部分应用,自定义后台可通过http://127.0.0.1:8080/my-admin/正常访问。但在TemplateView对应的模板main.html中,无法正确添加指向该自定义后台的链接(对应代码中????????位置),标准admin页面的链接可正常使用。

相关代码

mydjango/myadmin/admin.py

from django.contrib.admin import AdminSite
    
class EventAdminSite(AdminSite):
        site_header = 'Test ADMIN'
        site_titile = 'Test ADMIN PORTAL'  # 注意:此处拼写错误,应为site_title
        index_title = 'WELCOME TO MY ADMIN PORTAL'
    
my_admin_site = EventAdminSite(name = 'my_admin')

mydjango/applications/admin.py

from django.contrib import admin
from .models import Application
from myadmin.admin import my_admin_site

class ApplicationAdmin(admin.ModelAdmin):
    search_fields = ["name", "dest1_protocol","dest1_port"]
    exclude = ["created","modified"]   
    
   
admin.site.register(Application)
my_admin_site.register(Application,ApplicationAdmin)

mydjango/mysettings.py

urlpatterns = [
       ..
       path("my-admin/",my_admin_site.urls),
       ..
]

mydjango/main/views.py

from django.shortcuts import render

from django.views.generic.base import TemplateView

class IndexView(TemplateView):
    template_name = 'main/index.html'
    
    def get_context_data(self, *args, **kwargs):
        context = super().get_context_data(*args, **kwargs)
        context['title'] = "Policy-Management"
        return context

mydjango/main/templates/main.html

{% load admin_urls %}

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>{{ title }}</title>
</head>
<body>
    {{ title }}
    <a href="{% url 'admin:index' %}">link to admin panel</a>
    <a href="{% url '???????????????????????' %}">link to my admin panel</a>

</body>
</html>
解决方案

自定义AdminSite的URL命名空间由创建实例时传入的name参数决定。你创建my_admin_site时指定了name='my_admin',因此它的首页URL名称为my_admin:index,直接替换模板中的占位符即可:

修改main.html中的链接代码:

<a href="{% url 'my_admin:index' %}">link to my admin panel</a>

另外注意:你的EventAdminSite类中site_titile存在拼写错误,正确应为site_title,修正后才能正常显示后台页面的标题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 10:02:40