Module templates can be debugged visually through use of a TemplateDebugView
that renders a single module with a series of test cases.
Consider an example module that renders a simple hyperlink. This module requires a target URL and also accepts optional link text. A simple Jinja template for this module might look like this:
<a href="{{ value.url }}"> {{ value.text | default( value.url, true ) }} </a>
Next, define test cases for the module that cover all supported input configurations. For this simple link module, there are only a few useful test cases, but more complicated modules might have many more.
Test cases should be defined as a Python dict, where the key is a string name of the test case and the value is a dict that will be passed to the module template.
# myapp/template_debug.py
link_test_cases = {
'Link without text': {
'url': 'https://www.consumerfinance.gov',
},
'Link with empty text': {
'url': 'https://www.consumerfinance.gov',
'text': '',
},
'Link with text': {
'url': 'https://www.consumerfinance.gov',
'text': 'Visit our website',
},
}
The next step is to register the template debug view with Django so that it can be loaded in a browser.
# in myapp/wagtail_hooks.py
from myapp.template_debug import link_test_cases
from v1.template_debug import register_template_debug
register_template_debug('myapp', 'link', 'myapp/link.html', link_test_cases)
Once logged into the Wagtail admin, the template debug view for this module
will now be available at the /admin/template_debug/myapp/link/
URL.
Associated JavaScript required by the module can be included in the template
debug view by listing it in the register_template_debug
call:
register_template_debug(
'myapp',
'link',
'myapp/link.html',
link_test_cases
extra_js=['link.js']
)