Пользовательский шаблонный тег Django, передающий переменное число аргументов - PullRequest
2 голосов
/ 25 июля 2011

Я пытаюсь написать собственный шаблонный тег django, который будет вызываться в шаблоне следующим образом:

Шаблон:

{% load tag_name %}
{% tag_fn arg1 arg2 ... arg n %}

arg1, ..., arg n - переменные python.

Шаблон тега:

В шаблонном теге у меня четыре диктонара

d1 = {"key1": "some text" + str(arg2), "key2":" some text" + str(arg m) как мудрый, у меня есть четыре словаря.

на основе значения arg1 соответствующий словарь должен отображаться, и я хочу, чтобы тег шаблона возвращал шаблону "some text value(arg1) some text value(arg m)" в результате.

Пожалуйста, предложите способ его реализации.

1 Ответ

4 голосов
/ 25 июля 2011

Вы можете передать любое количество переменных в свой пользовательский тег шаблона с помощью встроенного в Python способа передачи нескольких значений из списка. Пример:

from django import template

register = template.Library()

@register.tag('my_tag')
def do_whatever(parser, token):
    bits = token.contents.split()
    """
    Pass all of the arguments defined in the template tag except the first one,
    which will be the name of the template tag itself.
    Example: {% do_whatever arg1 arg2 arg3 %}
    *bits[1:] would be: [arg1, arg2, arg3]
    """
    return MyTemplateNode(*bits[1:])

class MyTemplateNode(template.Node):
    def __init__(self, *args, **kwargs):
        do_something()

    def render(self, context):
        do_something_else()

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...