我在Django 5.0.2中定义了自己的AdminSite,并在这个AdminSite中添加了一些APP。这是有效的,我可以通过 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,并使用与站点实例名称相对应的 实例名称空间。
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