我正在尝试通过创建自定义模板标签的用户来渲染导航菜单中已登录用户名。 PFB代码,
@register.inclusion_tag('kpt/navbar.html')
def getmenu( params ):
raw = params.split("|")
active_item = raw[0]
menus = [
{"name": "Home", "url": "/kpt/", "class":""},
{"name": "High CPC", "url": "/kpt/hcpc", "class":""},
{"name": "Trending Keywords", "url": "/kpt/tcpc","class":""}
]
for menu in menus:
if menu["name"] == str(active_item):
menu["class"] = "active"
return {'menus':menus, "user":raw[1] }
我想在此方法中检索登录用户全名,而不依赖于从模板传递它,因为那时我需要将变量与静态字符串连接起来。 Jinja不支持哪个!像这样的东西:
{% getmenu "Home|MD Danish" %}
MD丹麦语将在{{user.get_full_name}}中
请帮忙!
您可以在下面注册templatetag
。只需通过takes_context=True
注册您的inclusion_tag
@register.inclusion_tag('kpt/navbar.html', takes_context=True) # This will get context data from view / template
def getmenu(params):
# Here you can get user as below
user = params.request.user
raw = params.split("|")
active_item = raw[0]
menus = [
{"name": "Home", "url": "/kpt/", "class":""},
{"name": "High CPC", "url": "/kpt/hcpc", "class":""},
{"name": "Trending Keywords", "url": "/kpt/tcpc","class":""}
]
for menu in menus:
if menu["name"] == str(active_item):
menu["class"] = "active"
return {'menus':menus, "user":raw[1] }