      In older versions ``template_name`` defaulted to the string value
      ``'django/forms/default.html'``.
  
  ``template_name_label``
  -----------------------
  
  .. versionadded:: 4.0
  
  .. attribute:: Form.template_name_label
  
 
</s> remove ``template_name``
 </s> add Default rendering </s> remove ``get_context()``
-----------------

.. versionadded:: 4.0

.. method:: Form.get_context()

Return context for form rendering in a template.

The available context is:

* ``form``: The bound form.
* ``fields``: All bound fields, except the hidden fields.
* ``hidden_fields``: All hidden bound fields.
* ``errors``: All non field related or hidden field related form errors.

``render()``
------------

.. versionadded:: 4.0

.. method:: Form.render(template_name=None, context=None, renderer=None)

The render method is called by ``__str__`` as well as the
:meth:`.Form.as_table`, :meth:`.Form.as_p`, and :meth:`.Form.as_ul` methods.
All arguments are optional and default to:

* ``template_name``: :attr:`.Form.template_name`
* ``context``: Value returned by :meth:`.Form.get_context`
* ``renderer``: Value returned by :attr:`.Form.default_renderer`

 </s> add  </s> remove ----------
 </s> add ~~~~~~~~~~

.. attribute:: Form.template_name_p

The template used by ``as_p()``. Default: ``'django/forms/p.html'``.
~~~~~~~~~~~~~~~~~~~~~~~
      In older versions ``template_name`` defaulted to the string value
      ``'django/forms/default.html'``.
  
  ``template_name_label``
~~~~~~~~~~~~~~~~~~~~~~~
  
  .. versionadded:: 4.0
  
  .. attribute:: Form.template_name_label
  
keep keep keep keep replace keep keep keep keep keep
 Refs #32339 -- Restructured outputting HTML form docs.

In the topic doc, promoted the Reusable form templates section.

In the reference, re-grouped and promoted the default __str__()
rendering path, and then gathered the various as_*() helpers
subsequently.

Thanks to David Smith for review. 
docs/ref/forms/api.txt