mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-07-28 00:49:49 +03:00
Added TemplateEngineLoader to support multiple template engines
This commit is contained in:
parent
559088463b
commit
fb593df204
|
@ -8,11 +8,11 @@ from functools import reduce
|
|||
from django.core.exceptions import ImproperlyConfigured
|
||||
from django.db import models
|
||||
from django.db.models.constants import LOOKUP_SEP
|
||||
from django.template import loader
|
||||
from django.utils.encoding import force_str
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from rest_framework.compat import coreapi, coreschema, distinct
|
||||
from rest_framework.renderers import loader
|
||||
from rest_framework.settings import api_settings
|
||||
|
||||
|
||||
|
|
|
@ -8,12 +8,12 @@ from urllib import parse
|
|||
|
||||
from django.core.paginator import InvalidPage
|
||||
from django.core.paginator import Paginator as DjangoPaginator
|
||||
from django.template import loader
|
||||
from django.utils.encoding import force_str
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from rest_framework.compat import coreapi, coreschema
|
||||
from rest_framework.exceptions import NotFound
|
||||
from rest_framework.renderers import loader
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.settings import api_settings
|
||||
from rest_framework.utils.urls import remove_query_param, replace_query_param
|
||||
|
|
|
@ -15,7 +15,7 @@ from django.conf import settings
|
|||
from django.core.exceptions import ImproperlyConfigured
|
||||
from django.core.paginator import Page
|
||||
from django.http.multipartparser import parse_header
|
||||
from django.template import engines, loader
|
||||
from django.template import engines, loader as django_template_loader
|
||||
from django.urls import NoReverseMatch
|
||||
from django.utils.html import mark_safe
|
||||
|
||||
|
@ -35,6 +35,23 @@ from rest_framework.utils.field_mapping import ClassLookupDict
|
|||
def zero_as_none(value):
|
||||
return None if value == 0 else value
|
||||
|
||||
class TemplateEngineLoader(object):
|
||||
"""
|
||||
In case a project uses multiple template engines
|
||||
this class enhances the used `loader.get_template`
|
||||
and `loader.select_template` by specifying the `NAME`
|
||||
for the used template engine.
|
||||
See also: https://docs.djangoproject.com/en/3.0/topics/templates/#configuration
|
||||
"""
|
||||
def __init__(self):
|
||||
self.engine_name = api_settings.DEFAULT_TEMPLATE_ENGINE
|
||||
def get_template(self, template_name):
|
||||
return django_template_loader.get_template(template_name, using=self.engine_name)
|
||||
def select_template(self, template_name_list, using=None):
|
||||
return django_template_loader.select_template(template_name_list, using=self.engine_name)
|
||||
|
||||
loader = TemplateEngineLoader()
|
||||
|
||||
|
||||
class BaseRenderer:
|
||||
"""
|
||||
|
|
|
@ -61,6 +61,9 @@ DEFAULTS = {
|
|||
},
|
||||
'NUM_PROXIES': None,
|
||||
|
||||
# Custom template engine NAME
|
||||
'DEFAULT_TEMPLATE_ENGINE': None
|
||||
|
||||
# Pagination
|
||||
'PAGE_SIZE': None,
|
||||
|
||||
|
|
|
@ -2,14 +2,13 @@ import re
|
|||
from collections import OrderedDict
|
||||
|
||||
from django import template
|
||||
from django.template import loader
|
||||
from django.urls import NoReverseMatch, reverse
|
||||
from django.utils.encoding import force_str, iri_to_uri
|
||||
from django.utils.html import escape, format_html, smart_urlquote
|
||||
from django.utils.safestring import SafeData, mark_safe
|
||||
|
||||
from rest_framework.compat import apply_markdown, pygments_highlight
|
||||
from rest_framework.renderers import HTMLFormRenderer
|
||||
from rest_framework.renderers import HTMLFormRenderer, loader
|
||||
from rest_framework.utils.urls import replace_query_param
|
||||
|
||||
register = template.Library()
|
||||
|
|
|
@ -7,7 +7,6 @@ from django.conf.urls import include, url
|
|||
from django.core.cache import cache
|
||||
from django.db import models
|
||||
from django.http.request import HttpRequest
|
||||
from django.template import loader
|
||||
from django.test import TestCase, override_settings
|
||||
from django.utils.safestring import SafeText
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
@ -17,7 +16,8 @@ from rest_framework.compat import coreapi
|
|||
from rest_framework.decorators import action
|
||||
from rest_framework.renderers import (
|
||||
AdminRenderer, BaseRenderer, BrowsableAPIRenderer, DocumentationRenderer,
|
||||
HTMLFormRenderer, JSONRenderer, SchemaJSRenderer, StaticHTMLRenderer
|
||||
HTMLFormRenderer, JSONRenderer, SchemaJSRenderer, StaticHTMLRenderer,
|
||||
loader
|
||||
)
|
||||
from rest_framework.request import Request
|
||||
from rest_framework.response import Response
|
||||
|
|
Loading…
Reference in New Issue
Block a user