Overredieg jinja2 для настраиваемого представления на шаблонах django
hi Я хочу переопределить html.py в venv/Lib/coreschema/encodings/html.py. вот метод, который нужно переопределить:
def determine_html_template(schema):
if isinstance(schema, Array):
if schema.unique_items and isinstance(schema.items, Enum):
# Actually only for *unordered* input
return '/bootstrap3/inputs/select_multiple.html'
# TODO: Comma seperated inputs
return 'bootstrap3/inputs/textarea.html'
elif isinstance(schema, Object):
# TODO: Fieldsets
return 'bootstrap3/inputs/textarea.html'
elif isinstance(schema, Number):
return 'bootstrap3/inputs/input.html'
elif isinstance(schema, Boolean):
# TODO: nullable boolean
return 'bootstrap3/inputs/checkbox.html'
elif isinstance(schema, Enum):
# TODO: display values
return 'bootstrap3/inputs/select.html'
# String:
if schema.format == 'textarea':
return 'bootstrap3/inputs/textarea.html'
return 'bootstrap3/inputs/input.html'
и эти строки :
if isinstance(schema, Array):
if schema.unique_items and isinstance(schema.items, Enum):
# Actually only for *unordered* input
return '/bootstrap3/inputs/select_multiple.html'
Я хочу изменить select_multiple.html на custom_select_multiple.html в папке templates в каталоге проекта. Также это решение требует переопределения некоторых файлов, что я и сделал. Теперь он не может понять мой пользовательский файл, потому что в этом методе:
env = jinja2.Environment(loader=jinja2.PackageLoader('coreschema', 'templates'))
def render_to_form(schema):
template = env.get_template('form.html')
return template.render({
'parent': schema,
'determine_html_template': determine_html_template,
'get_textarea_value': get_textarea_value,
'get_attrs': get_attrs
})
использовал PackageLoader и jinja2 не может понять, где находится мой файл. и как мне теперь решить эту проблему.
На самом деле я пытаюсь решить эту проблему с помощью установки пользовательских урлов, но это не работает. на самом деле я не знаю. что мне делать.