Django’include’语句中的多行字符串
发布时间:2020-12-20 13:40:23 所属栏目:Python 来源:网络整理
导读:我正试图用我的Django模板干,并有一些代码,我与CSS混合使用简单的悬停弹出窗口.我想重用代码,但我的弹出窗口的内容将是 HTML,可能跨越多行.是否可以将多行字符串填充到模板变量中? 我尝试用block和block.super做一些时髦的东西,但这似乎只在扩展时工作(不包
我正试图用我的Django模板干,并有一些代码,我与CSS混合使用简单的悬停弹出窗口.我想重用代码,但我的弹出窗口的内容将是
HTML,可能跨越多行.是否可以将多行字符串填充到模板变量中?
我尝试用block和block.super做一些时髦的东西,但这似乎只在扩展时工作(不包括) 这是我想做的一个例子.可能吗? 的index.html <body> <h2>My Popup</h2> {% include "snippets/popup.html" with class="p" spantext="Hover me" popupdiv=""" <h2>This is a popup!</h2> <ul> <li>Something</li> <li>Something else</li> </ul> """ %} </body> 片段/ popup.html <div class="{{ class }}"> <span class='pointer'>{{ spantext }}</span> <div class="popup"> {{ popupdiv }} </div> </div> 我知道在Django中不可能有多行模板标签,但除了将我所有的div html压缩到一行之外,有什么方法可以解决这个问题吗? 干杯 解决方法
结果是“解析直到另一个模板标签”就是我所追求的.
http://www.djangobook.com/en/2.0/chapter09.html
这是我的代码: tags.py(在templatetags文件夹中) from django import template from django.template.loader import get_template from django.template.base import Node,TemplateSyntaxError register = template.Library() class PopupNode(Node): def __init__(self,nodelist,class_name,spantext): self.nodelist = nodelist self.class_name = class_name self.spantext = spantext def render(self,context): popup_html = get_template("ordersystem/snippets/popup.html") context.update({ 'class' : self.class_name,'spantext' : self.spantext,'popupdiv' : self.nodelist.render(context) }) return popup_html.render(context) @register.tag('popup') def show_popup(parser,token): nodelist = parser.parse(('endpopup',)) tokens = token.split_contents() if len(tokens) != 4: raise TemplateSyntaxError("show_popup is in the format 'popup with class=X spantext=Y") try: context_extras = [t.split("=")[1].strip('"') for t in tokens[2:]] except IndexError: raise TemplateSyntaxError("show_popup is in the format 'popup with class=X spantext=Y") parser.delete_first_token() return PopupNode(nodelist,*context_extras) 然后在我的html文件中,我可以这样做: {% popup with class_name=management spantext=Manage %} <h2>This is a popup!</h2> <ul> <li>Something</li> <li>Something else</li> </ul> {% endpoup %} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |