Django: Ссылка на собственный сайт AdminSite в шаблоне TemplateView

Я определил свой собственный AdminSite в Django 5.0.2 и добавил несколько APP на этот AdminSite. Это работает, и я могу получить доступ к своей собственной странице администратора через http://127.0.0.1:8080/my-admin/. Теперь я хочу добавить ссылку этой админ-страницы ("my-admin") в шаблон templateView. (см. ????????? в файле main.html). Ссылка на стандартную админ-страницу работает нормально.

Я новичок в Django и пытался несколько дней, чтобы получить это вверх &работает, но, к сожалению, я не смог найти никакого решения. Не мог бы кто-нибудь подсказать мне, пожалуйста?

mydjango/myadmin/admin.py:

from django.contrib.admin import AdminSite
    
class EventAdminSite(AdminSite):
        site_header = 'Test ADMIN'
        site_titile = 'Test ADMIN PORTAL'
        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>

Должно быть {% url 'my_admin:index' %}.

При создании экземпляра AdminSite вы можете указать уникальное имя экземпляра, используя аргумент name в конструкторе. Это имя экземпляра используется для идентификации экземпляра, особенно при переключении URL-адресов администратора.

https://docs.djangoproject.com/en/5.0/ref/contrib/admin/#django.contrib.admin.AdminSite

Эти именованные URL регистрируются в пространстве имен приложения admin и в пространстве имен экземпляра, соответствующем имени экземпляра Site.

https://docs.djangoproject.com/en/5.0/ref/contrib/admin/#admin-reverse-urls

Подробнее о пространствах имен URL: https://docs.djangoproject.com/en/5.0/topics/http/urls/#url-namespaces

Вернуться на верх