我正在定制django的管理页面,并在管理员user
和group
的添加,更改,更改列表中传递一些变量时遇到了障碍模板。
我通过以下方式传递了索引或任何其他页面中的变量:
#admin.py
class MyAdminSite(AdminSite):
def index(self, request, extra_context=None):
extra_context = extra_context or {}
extra_context['Sched_today'] = mycustomlink
return super(MyAdminSite, self).index(request, extra_context=extra_context)
或
class MyModelAdmin (admin.ModelAdmin):
def change_view(self, request, object_id, form_url='', extra_context=None):
....
但是如何将变量传递给groups
和user
模板(身份验证和授权),changelist_view
,change_view
或add_view
?< / p>
答案 0 :(得分:0)
在project/__init__.py
中,您可以执行此操作。
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User
class MyUserAdmin(UserAdmin):
list_display = UserAdmin.list_display + ('is_superuser',)
def change_view(self, request, object_id, form_url='', extra_context=None):
if extra_context is None:
extra_context = {"some_var": 1337}
return super(MyUserAdmin, self).change_view(
request, object_id=object_id, form_url=form_url, extra_context=extra_context)
admin.site.unregister(User)
admin.site.register(User, MyUserAdmin)
您还可以覆盖add_form_template
,change_form_template
,change_list_template
和其他人,指向您自己的自定义模板。
查看Django source了解有关这些模板的更多详情。
答案 1 :(得分:0)
首先取消注册模型,然后使用您自己的管理员重新注册模型:
from django.contrib import admin
from django.contrib.auth import get_user_model
class UserAdmin(admin.ModelAdmin):
def change_view(self, request, object_id, form_url="", extra_context=None):
raise PermissionError("Boo")
admin.site.unregister(get_user_model())
admin.site.register(get_user_model(), UserAdmin)