終了タグまで解析し、見つからない場合は例外をキャッチすることができます。あなたはまた、別のmytagというノードに実行する場合は、停止することがあります:それは100%正しいです
def do_mytag_stuff(parser, token):
# Process your token however you need
mytag_args = token.split_contents()
try:
nodelist = parser.parse(('endmytag', 'mytag'))
token = parser.next_token()
if token.contents == 'endmytag':
# Found an ending tag, make a node for its contents
parser.delete_first_token()
return MyTagNode(nodelist, mytag_args)
except TemplateSyntaxError:
# Neither tag was found
pass
# So either there's no closing tag, or we met another mytag before a closing tag.
# Do whatever you would for a single tag here
return SingleMyTagNode(mytag_args)
わからない場合は、うまくいけばそれが役立ちます。
私の唯一の恐怖は、これが他の問題を隠すかもしれないということです。人が正しくDNEなどのテンプレートを含む何かを正しく入力しないのと同じように。 – Nix
本当に、私は2つの同様のタグを持っていれば全員がきれいになると思います。 –
これは実際にはもっと良い解決策かもしれませんし、論理を共有することもできるので、ちょうどファサードになるでしょう。 – Nix