mirror of
https://github.com/django/django.git
synced 2025-06-05 11:39:13 +00:00
ticket 36028: add AdminSite.template_engine option
This commit is contained in:
parent
f05edb2b43
commit
b06eeb75dd
@ -91,4 +91,5 @@ def delete_selected(modeladmin, request, queryset):
|
|||||||
"admin/delete_selected_confirmation.html",
|
"admin/delete_selected_confirmation.html",
|
||||||
],
|
],
|
||||||
context,
|
context,
|
||||||
|
using=modeladmin.admin_site.template_engine
|
||||||
)
|
)
|
||||||
|
@ -1403,6 +1403,7 @@ class ModelAdmin(BaseModelAdmin):
|
|||||||
"admin/change_form.html",
|
"admin/change_form.html",
|
||||||
],
|
],
|
||||||
context,
|
context,
|
||||||
|
using=self.admin_site.template_engine,
|
||||||
)
|
)
|
||||||
|
|
||||||
def _get_preserved_qsl(self, request, preserved_filters):
|
def _get_preserved_qsl(self, request, preserved_filters):
|
||||||
@ -1458,6 +1459,7 @@ class ModelAdmin(BaseModelAdmin):
|
|||||||
{
|
{
|
||||||
"popup_response_data": popup_response_data,
|
"popup_response_data": popup_response_data,
|
||||||
},
|
},
|
||||||
|
using=self.admin_site.template_engine,
|
||||||
)
|
)
|
||||||
|
|
||||||
elif "_continue" in request.POST or (
|
elif "_continue" in request.POST or (
|
||||||
@ -1540,6 +1542,7 @@ class ModelAdmin(BaseModelAdmin):
|
|||||||
{
|
{
|
||||||
"popup_response_data": popup_response_data,
|
"popup_response_data": popup_response_data,
|
||||||
},
|
},
|
||||||
|
using=self.admin_site.template_engine,
|
||||||
)
|
)
|
||||||
|
|
||||||
opts = self.opts
|
opts = self.opts
|
||||||
@ -1720,6 +1723,7 @@ class ModelAdmin(BaseModelAdmin):
|
|||||||
{
|
{
|
||||||
"popup_response_data": popup_response_data,
|
"popup_response_data": popup_response_data,
|
||||||
},
|
},
|
||||||
|
using=self.admin_site.template_engine,
|
||||||
)
|
)
|
||||||
|
|
||||||
self.message_user(
|
self.message_user(
|
||||||
@ -1766,6 +1770,7 @@ class ModelAdmin(BaseModelAdmin):
|
|||||||
"admin/delete_confirmation.html",
|
"admin/delete_confirmation.html",
|
||||||
],
|
],
|
||||||
context,
|
context,
|
||||||
|
using=self.admin_site.template_engine,
|
||||||
)
|
)
|
||||||
|
|
||||||
def get_inline_formsets(self, request, formsets, inline_instances, obj=None):
|
def get_inline_formsets(self, request, formsets, inline_instances, obj=None):
|
||||||
@ -2035,6 +2040,7 @@ class ModelAdmin(BaseModelAdmin):
|
|||||||
{
|
{
|
||||||
"title": _("Database error"),
|
"title": _("Database error"),
|
||||||
},
|
},
|
||||||
|
using=self.admin_site.template_engine,
|
||||||
)
|
)
|
||||||
return HttpResponseRedirect(request.path + "?" + ERROR_FLAG + "=1")
|
return HttpResponseRedirect(request.path + "?" + ERROR_FLAG + "=1")
|
||||||
|
|
||||||
@ -2189,6 +2195,7 @@ class ModelAdmin(BaseModelAdmin):
|
|||||||
"admin/change_list.html",
|
"admin/change_list.html",
|
||||||
],
|
],
|
||||||
context,
|
context,
|
||||||
|
using=self.admin_site.template_engine,
|
||||||
)
|
)
|
||||||
|
|
||||||
def get_deleted_objects(self, objs, request):
|
def get_deleted_objects(self, objs, request):
|
||||||
@ -2329,6 +2336,7 @@ class ModelAdmin(BaseModelAdmin):
|
|||||||
"admin/object_history.html",
|
"admin/object_history.html",
|
||||||
],
|
],
|
||||||
context,
|
context,
|
||||||
|
using=self.admin_site.template_engine,
|
||||||
)
|
)
|
||||||
|
|
||||||
def get_formset_kwargs(self, request, obj, inline, prefix):
|
def get_formset_kwargs(self, request, obj, inline, prefix):
|
||||||
|
@ -53,6 +53,7 @@ class AdminSite:
|
|||||||
empty_value_display = "-"
|
empty_value_display = "-"
|
||||||
|
|
||||||
login_form = None
|
login_form = None
|
||||||
|
template_engine = None
|
||||||
index_template = None
|
index_template = None
|
||||||
app_index_template = None
|
app_index_template = None
|
||||||
login_template = None
|
login_template = None
|
||||||
@ -572,7 +573,7 @@ class AdminSite:
|
|||||||
request.current_app = self.name
|
request.current_app = self.name
|
||||||
|
|
||||||
return TemplateResponse(
|
return TemplateResponse(
|
||||||
request, self.index_template or "admin/index.html", context
|
request, self.index_template or "admin/index.html", context, using=self.template_engine
|
||||||
)
|
)
|
||||||
|
|
||||||
def app_index(self, request, app_label, extra_context=None):
|
def app_index(self, request, app_label, extra_context=None):
|
||||||
@ -597,6 +598,7 @@ class AdminSite:
|
|||||||
self.app_index_template
|
self.app_index_template
|
||||||
or ["admin/%s/app_index.html" % app_label, "admin/app_index.html"],
|
or ["admin/%s/app_index.html" % app_label, "admin/app_index.html"],
|
||||||
context,
|
context,
|
||||||
|
using=self.template_engine,
|
||||||
)
|
)
|
||||||
|
|
||||||
def get_log_entries(self, request):
|
def get_log_entries(self, request):
|
||||||
|
@ -2949,6 +2949,11 @@ Templates can override or extend base admin templates as described in
|
|||||||
The text to put at the top of the admin index page (a string). By default,
|
The text to put at the top of the admin index page (a string). By default,
|
||||||
this is "Site administration".
|
this is "Site administration".
|
||||||
|
|
||||||
|
.. attribute:: AdminSite.template_engine
|
||||||
|
|
||||||
|
Name of a template engine, as specified in your ``TEMPLATES`` setting, that
|
||||||
|
will be used to render the admin site's views.
|
||||||
|
|
||||||
.. attribute:: AdminSite.index_template
|
.. attribute:: AdminSite.index_template
|
||||||
|
|
||||||
Path to a custom template that will be used by the admin site main index
|
Path to a custom template that will be used by the admin site main index
|
||||||
|
4
tests/admin_views/sites.py
Normal file
4
tests/admin_views/sites.py
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
from django.contrib import admin
|
||||||
|
|
||||||
|
class CustomAdminSiteWithCustomTemplateEngine(admin.AdminSite):
|
||||||
|
template_engine = "custom_template_engine"
|
@ -6,6 +6,7 @@ from django.test.client import RequestFactory
|
|||||||
from django.urls import path, reverse
|
from django.urls import path, reverse
|
||||||
|
|
||||||
from .models import Article
|
from .models import Article
|
||||||
|
from .sites import CustomAdminSiteWithCustomTemplateEngine
|
||||||
|
|
||||||
site = admin.AdminSite(name="test_adminsite")
|
site = admin.AdminSite(name="test_adminsite")
|
||||||
site.register(User)
|
site.register(User)
|
||||||
@ -126,3 +127,20 @@ class SiteActionsTests(SimpleTestCase):
|
|||||||
self.assertEqual(self.site.get_action(action_name), delete_selected)
|
self.assertEqual(self.site.get_action(action_name), delete_selected)
|
||||||
self.site.disable_action(action_name)
|
self.site.disable_action(action_name)
|
||||||
self.assertEqual(self.site.get_action(action_name), delete_selected)
|
self.assertEqual(self.site.get_action(action_name), delete_selected)
|
||||||
|
|
||||||
|
class AdminSiteCustomTemplateEngineTests(TestCase):
|
||||||
|
request_factory = RequestFactory()
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def setUp(cls):
|
||||||
|
cls.user = User.objects.create_superuser(
|
||||||
|
username="super", password="secret", email="super@example.com"
|
||||||
|
)
|
||||||
|
|
||||||
|
def test_template_engine(self):
|
||||||
|
admin_site = CustomAdminSiteWithCustomTemplateEngine(name="other")
|
||||||
|
request = RequestFactory().get("/")
|
||||||
|
request.user = self.user
|
||||||
|
index_response = admin_site.index(request=request)
|
||||||
|
|
||||||
|
self.assertEqual(index_response.using, CustomAdminSiteWithCustomTemplateEngine.template_engine)
|
Loading…
x
Reference in New Issue
Block a user