Bases: BrowsableAPIRenderer
Customization over drf's BrowsableAPIRenderer.
Custom renderer to remove all extra forms which results in extra queries
if needed.
Source code in saritasa_drf_tools/renderers.py
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 | class BrowsableAPIRenderer(renderers.BrowsableAPIRenderer):
"""Customization over drf's BrowsableAPIRenderer.
Custom renderer to remove all extra forms which results in extra queries
if needed.
"""
def get_rendered_html_form( # type: ignore
self,
data, # noqa: ANN001
view, # noqa: ANN001
method, # noqa: ANN001
request, # noqa: ANN001
) -> str | bool | None:
"""Customize `get_rendered_html_form` logic.
Depending on settings show forms just for `DELETE` and `OPTIONS`
method. Useful if you have a lot of custom serializers fields,
which does not support well form inputs. Also lowers sql queries count.
"""
enable_rendered_html_form_setting = getattr(
settings,
"SARITASA_DRF_BROWSABLE_API_ENABLE_HTML_FORM",
True,
)
if getattr(
view,
"enable_browsable_api_rendered_html_form",
enable_rendered_html_form_setting,
):
return super().get_rendered_html_form(
data=data,
view=view,
method=method,
request=request,
)
with override_method(view, request, method) as overridden_request:
if not self.show_form_for_method(
view=view,
method=method,
request=overridden_request,
obj=None,
):
return None
if method in ("DELETE", "OPTIONS"):
return True # Don't actually need to return a form
return None
|
Customize get_rendered_html_form logic.
Depending on settings show forms just for DELETE and OPTIONS
method. Useful if you have a lot of custom serializers fields,
which does not support well form inputs. Also lowers sql queries count.
Source code in saritasa_drf_tools/renderers.py
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 | def get_rendered_html_form( # type: ignore
self,
data, # noqa: ANN001
view, # noqa: ANN001
method, # noqa: ANN001
request, # noqa: ANN001
) -> str | bool | None:
"""Customize `get_rendered_html_form` logic.
Depending on settings show forms just for `DELETE` and `OPTIONS`
method. Useful if you have a lot of custom serializers fields,
which does not support well form inputs. Also lowers sql queries count.
"""
enable_rendered_html_form_setting = getattr(
settings,
"SARITASA_DRF_BROWSABLE_API_ENABLE_HTML_FORM",
True,
)
if getattr(
view,
"enable_browsable_api_rendered_html_form",
enable_rendered_html_form_setting,
):
return super().get_rendered_html_form(
data=data,
view=view,
method=method,
request=request,
)
with override_method(view, request, method) as overridden_request:
if not self.show_form_for_method(
view=view,
method=method,
request=overridden_request,
obj=None,
):
return None
if method in ("DELETE", "OPTIONS"):
return True # Don't actually need to return a form
return None
|