Django ModelAdmin.get_url()未注册自定义URL
我试图在Django管理站点中为我的模型创建自定义视图。我为名为Django ModelAdmin.get_url()未注册自定义URL,django,django-admin,Django,Django Admin,我试图在Django管理站点中为我的模型创建自定义视图。我为名为Document的模型创建了ModelAdmin,如下所示: from django.http import HttpResponse from django.urls import path from django.contrib import admin from my_app.models import Document @admin.register(Document) class DocumentAdmin(admin
Document
的模型创建了ModelAdmin
,如下所示:
from django.http import HttpResponse
from django.urls import path
from django.contrib import admin
from my_app.models import Document
@admin.register(Document)
class DocumentAdmin(admin.ModelAdmin):
def get_urls(self):
urls = super().get_urls()
custom_urls = [
path('my-view/', self.admin_site.admin_view(self.my_view))
]
return urls + custom_urls
def my_view(self, request):
return HttpResponse('test')
根据(v2.1),我应该能够使用/admin/my_app/document/my view
访问my_view
,但当我尝试访问此URL时,django会将我重定向到管理员主页,并显示以下警告:
Document with ID "my-view" doesn't exist. Perhaps it was deleted?
看来django看不到我的自定义url。我错过了什么?我怎样才能让它工作呢?这只是一个URL排序的问题;一般的管理员变更视图首先被处理,并将您对“我的视图”的请求捕获为slug。您可以通过将URL放在第一位来改变这一点,这是您链接到的示例中实际执行的操作:
return custom_urls + urls