Using custom templates¶
c2cgeoform distinguishes two types of templates: views templates and widget templates. - Views templates are used directly by Pyramid and provide the site structure. - Widgets templates are used by Deform to render the forms.
Default views templates¶
The default c2cgeoform views templates are located in the
folder and use jinja2 syntax.
c2cgeoform comes with partial templates that are included in views templates of your project.
Overriding widgets templates globally¶
Deform widget templates are located in the
templates/widgets folder and
use the chameleon syntax.
At rendering time, Deform will search folders for the templates in order they
appear in Form renderer
search_path property. c2cgeoform configure it to:
default_search_paths = ( resource_filename('c2cgeoform', 'templates/widgets'), resource_filename('deform', 'templates'))
But you can add you own widgets folder, in your package
import c2cgeoform search_paths = ( (resource_filename(__name__, 'templates/widgets'),) + c2cgeoform.default_search_paths ) c2cgeoform.default_search_paths = search_paths
To overwrite globally the Deform templates or the templates coming from
c2cgeoform (like the map widget), you just need to copy the template to your application
Use a custom template for a form or a specific widget in a form¶
Both the form main template and widget templates can be changed locally for a
given model by giving a
template property to the
base_schema = GeoFormSchemaNode( Comment, widget=FormWidget(template='comment'))
Note that it is possible to create a layout for the form fields without completely
overriding the form template by giving a
fields_template to the form schema.
base_schema = GeoFormSchemaNode( Comment, widget=FormWidget(fields_template='comment_fields'))
Here is the default one: https://github.com/camptocamp/c2cgeoform/blob/master/c2cgeoform/templates/widgets/mapping_fields.pt