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.core.exceptions import ImproperlyConfigured
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.db.models.constants import LOOKUP_SEP
|
from django.db.models.constants import LOOKUP_SEP
|
||||||
from django.template import loader
|
|
||||||
from django.utils.encoding import force_str
|
from django.utils.encoding import force_str
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from rest_framework.compat import coreapi, coreschema, distinct
|
from rest_framework.compat import coreapi, coreschema, distinct
|
||||||
|
from rest_framework.renderers import loader
|
||||||
from rest_framework.settings import api_settings
|
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 InvalidPage
|
||||||
from django.core.paginator import Paginator as DjangoPaginator
|
from django.core.paginator import Paginator as DjangoPaginator
|
||||||
from django.template import loader
|
|
||||||
from django.utils.encoding import force_str
|
from django.utils.encoding import force_str
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from rest_framework.compat import coreapi, coreschema
|
from rest_framework.compat import coreapi, coreschema
|
||||||
from rest_framework.exceptions import NotFound
|
from rest_framework.exceptions import NotFound
|
||||||
|
from rest_framework.renderers import loader
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from rest_framework.settings import api_settings
|
from rest_framework.settings import api_settings
|
||||||
from rest_framework.utils.urls import remove_query_param, replace_query_param
|
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.exceptions import ImproperlyConfigured
|
||||||
from django.core.paginator import Page
|
from django.core.paginator import Page
|
||||||
from django.http.multipartparser import parse_header
|
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.urls import NoReverseMatch
|
||||||
from django.utils.html import mark_safe
|
from django.utils.html import mark_safe
|
||||||
|
|
||||||
|
@ -35,6 +35,23 @@ from rest_framework.utils.field_mapping import ClassLookupDict
|
||||||
def zero_as_none(value):
|
def zero_as_none(value):
|
||||||
return None if value == 0 else 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:
|
class BaseRenderer:
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -61,6 +61,9 @@ DEFAULTS = {
|
||||||
},
|
},
|
||||||
'NUM_PROXIES': None,
|
'NUM_PROXIES': None,
|
||||||
|
|
||||||
|
# Custom template engine NAME
|
||||||
|
'DEFAULT_TEMPLATE_ENGINE': None
|
||||||
|
|
||||||
# Pagination
|
# Pagination
|
||||||
'PAGE_SIZE': None,
|
'PAGE_SIZE': None,
|
||||||
|
|
||||||
|
|
|
@ -2,14 +2,13 @@ import re
|
||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
|
|
||||||
from django import template
|
from django import template
|
||||||
from django.template import loader
|
|
||||||
from django.urls import NoReverseMatch, reverse
|
from django.urls import NoReverseMatch, reverse
|
||||||
from django.utils.encoding import force_str, iri_to_uri
|
from django.utils.encoding import force_str, iri_to_uri
|
||||||
from django.utils.html import escape, format_html, smart_urlquote
|
from django.utils.html import escape, format_html, smart_urlquote
|
||||||
from django.utils.safestring import SafeData, mark_safe
|
from django.utils.safestring import SafeData, mark_safe
|
||||||
|
|
||||||
from rest_framework.compat import apply_markdown, pygments_highlight
|
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
|
from rest_framework.utils.urls import replace_query_param
|
||||||
|
|
||||||
register = template.Library()
|
register = template.Library()
|
||||||
|
|
|
@ -7,7 +7,6 @@ from django.conf.urls import include, url
|
||||||
from django.core.cache import cache
|
from django.core.cache import cache
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.http.request import HttpRequest
|
from django.http.request import HttpRequest
|
||||||
from django.template import loader
|
|
||||||
from django.test import TestCase, override_settings
|
from django.test import TestCase, override_settings
|
||||||
from django.utils.safestring import SafeText
|
from django.utils.safestring import SafeText
|
||||||
from django.utils.translation import gettext_lazy as _
|
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.decorators import action
|
||||||
from rest_framework.renderers import (
|
from rest_framework.renderers import (
|
||||||
AdminRenderer, BaseRenderer, BrowsableAPIRenderer, DocumentationRenderer,
|
AdminRenderer, BaseRenderer, BrowsableAPIRenderer, DocumentationRenderer,
|
||||||
HTMLFormRenderer, JSONRenderer, SchemaJSRenderer, StaticHTMLRenderer
|
HTMLFormRenderer, JSONRenderer, SchemaJSRenderer, StaticHTMLRenderer,
|
||||||
|
loader
|
||||||
)
|
)
|
||||||
from rest_framework.request import Request
|
from rest_framework.request import Request
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
|
|
Loading…
Reference in New Issue
Block a user