Войти в систему Информация о пользователе Внутри Django-tempatetags метод тега включения? - PullRequest
0 голосов
/ 26 февраля 2019

Я пытаюсь отобразить меню навигации, выполнив вход в систему с именем пользователя в нем, путем создания пользовательских тегов-шаблонов.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 Danish будет в {{user.get_full_name}}

Пожалуйста, помогите!

1 Ответ

0 голосов
/ 26 февраля 2019

Вы можете зарегистрировать templatetag, как показано ниже.Просто проходите takes_context=True, где вы регистрируете свой тег_ключения

@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] }
...