How about adding those extra variables to the widgets context? This would give some extra flexibility in rendering the template. For example bootstrap tabs:
```
<!-- Nav tabs --> <ul class="nav nav-tabs" role="tablist"> <li class="nav-item"> <a class="nav-link active" data-toggle="tab" href="#edit-{{attrs.id}}" role="tab">Edit</a> </li> <li class="nav-item"> <a class="nav-link" data-toggle="tab" href="#preview-{{attrs.id}}" role="tab">Preview</a> </li> </ul> <!-- Tab panes --> <div class="tab-content markdownx"> <div class="tab-pane active" id="edit-{{attrs.id}}" role="tabpanel"> {{ markdownx_editor }} </div> <div class="tab-pane" id="preview-{{attrs.id}}" role="tabpanel"> <div class="markdownx-preview"></div> </div> </div>
```
Cleaned up the the new Django 1.11+ compatibility code and added documentations template. Also, `add_markdownx_attrs` now returns the updated dict with the output used for updating widget attributes.