【发布时间】:2023-03-05 16:45:01
【问题描述】:
在我的项目中,有多个应用程序,所以我也有 admin.py 每个文件夹。这是我的一些admin.py
api/admin.py
from django.contrib import admin
from .models import Message
@admin.register(Message)
class MessageAdmin(admin.ModelAdmin):
list_display = ['source','name','created']
list_filter = ['source','created']
search_fields = ['message']
dummy/admin.py
from django.contrib.admin import AdminSite
from dummy.forms import MyAdminLoginForm
# export admin.py another app
from api.models import Message
from api.admin import MessageAdmin
class MyAdminSite(AdminSite):
login_form = MyAdminLoginForm
login_template = 'dummy/templates/admin/login.html'
site = MyAdminSite()
site.register(Message,MessageAdmin)
由于我想在 django 管理员登录上使用验证码,我应该覆盖通过 dummy/admin.py 从 AdminSite 继承的登录表单。之后,我在主 url 上注册了自定义登录
from django.contrib import admin
from django.urls import path, include
from dummy.admin import site
admin.site = site
urlpatterns = [
path('admin/', admin.site.urls),
path('api/', include('api.urls'))
]
您可以看到我在 dummy/admin.py 上重新注册了 api/admin.py,我这样做是因为如果我没有重新注册 api/admin.py,它将不会显示在django 管理员。当我使用从 AdminSite 继承的自定义登录表单时,我应该怎么做才能使 admin.py 另一个应用程序不需要像以前那样重新注册
【问题讨论】:
标签: python django django-admin