title: Django: efficient template/string separation and override
body: <p>I have a generic Django view that renders a template. The template is in an app which other projects will use. Importing projects will typically subclass the View the app provides. The View has a default template, which does a job with generic wording.</p>
  
  <p>99% of the time, subclassing Views will want to only change the text, so rather than make them duplicate the template for the sake of altering non-markup wording, i'm looking for a way to allow users of the class to replace wording in the template in the most efficient way.</p>
  
  <p>Options explored so far:</p>
  
  <ul>
  <li>template partials containing only the text which using apps can override (magic, a lot of user work)</li>
  <li>A <code>template_strings</code> method on the view which provides a dict of strings which end up in the template context which subclasses can override</li>
  <li>Using (abusing?) the translation system such that the app provides default english translations and using code can provide their own translations instead (not actually worked this one out yet, just an idea)</li>
  <li>Doing the above <code>template_strings</code> through AppConfig, but this seems ... yucky like it may get very unweildy with a lot of English strings. If doing this I would create a context-like setup so you don't have to re-declare all strings</li>
  </ul>
  
  <p>Seems like it should be a solved problem to subclass a view which does a complete job and just provide alternate strings for text. Is there a better method than the above? Convention? Something I am missing?</p>
  
  <p>(django 1.11 Python 3.6.2)</p>