2013-08-30 2 views
0

사이트의 모든 막대를 빌드하기위한 templatetags를 만들려고합니다. 나는 모든 의사를 따라 갔지만 여전히 작동하지는 않는다. 내가 응용 프로그램 "바"를 작성/표시 줄에 settings.py 에서 응용 프로그램에 추가inclusion_tag가 작동하지 않습니다. 템플릿을로드 할 수 없습니다.

/

-- __init__.py 
-- templatetags/ 
-- -- nav_bar.py 
-- -- __init__.py 

에서/템플릿/ - top_bar.html

이제

nav_bar.py is :

from django import template 
register = template.Library() 

@register.inclusion_tag('top_bar.html') 
def show_topbar(): 
    user_login = 'prova' 
    return {'user_login': user_login} 

그것은 시도가 아니라 단지 의미가 있습니다. 나중에 user_login은 사용자가 기록 된 경우 request.user.is_authenticated()와 같은 정보를 표시합니다.

top_bar.html is: 

     <div class="navbar navbar-inverse navbar-fixed-top"> 
     <div class="container"> 
      <div class="navbar-header"> 
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> 
       <span class="icon-bar"></span> 
       <span class="icon-bar"></span> 
       <span class="icon-bar"></span> 
      </button> 
      <a class="navbar-brand" href="#">SkillAsk.com</a> 
      </div> 
      <div class="navbar-collapse collapse"> 
      <ul class="nav navbar-nav"> 
       <li class="active"><a href="#">Home</a></li> 
       <li><a href="#about">About</a></li> 
       <li><a href="#contact">Contact {{ user }}'s</a></li> 
    {% if user_login %} 
<div class="navbar-form navbar-right"><a href="/accounts/logout/" class="btn btn-danger">Log Out</a> 
    </div> 
    <ul class="nav navbar-nav navbar-right"> 
    <li id="fat-menu" class="dropdown"> 
    <a href="#" id="drop3" role="button" class="dropdown-toggle" data-toggle="dropdown"> 
    {{ user.username }}'s <b class="caret"></b></a> 
     <ul class="dropdown-menu" role="menu" aria-labelledby="drop3"> 
     <li role="presentation"><a role="menuitem" tabindex="-1" href="/backoffice/">Profilo</a></li> 
     <li role="presentation"><a role="menuitem" tabindex="-1" href="/backoffice/setting">Impostazioni</a></li> 
     <li role="presentation" class="divider"></li> 
     <li role="presentation"><a role="menuitem" tabindex="-1" href="/backoffice/skills/add">Aggiungi Skill</a></li> 
     </ul> 
     </li> 
    </ul> 



    <!-- Authenticate account menu --> 
    {% else %} 
      <form action="/accounts/login/?next=/backoffice" method="post" accept-charset="utf-8" class="navbar-form navbar-right">{% csrf_token %} 
       <div class="form-group"> 
       <input type="text" placeholder="UserName" name="username" id="username" class="form-control"> 
       </div> 
       <div class="form-group"> 
       <input type="password" placeholder="Password" name="password" id="password" class="form-control"> 
       </div> 
       <button type="submit" class="btn btn-success">Sign in</button> 
      </form> 
    {% endif %} 

      </div><!--/.navbar-collapse --> 
     </div> 
     </div> 

내가

{% load staticfiles %} 
{% load nav_bar %} 
bla bla bla 
bla bla 

및 인쇄와 templatetag로드 (내가 대신 모든 물건 아주 간단한 템플릿으로도 시도했지만 결과는 변경되지 않습니다) base.html 지금

을 템플릿

{{ show_topbar }} 

... 내가 바를 넣고 싶었던 곳. 그것의 아주 아주 아주 간단하게 보이지만, 출력은 오류없이 아무것도 아니다. 템플릿 top_bar.html을 삭제해도 아무런 오류가 없습니다 ... 템플릿 이름을 변경하면 오류가 발생하지 않습니다 ...

IMHO 문제가 등록에 포함되었습니다. 원래는 몇 가지 response_to_render를 사용하고 싶었습니다. 그 답례로 ... docs에있는 예제는 render를 사용하지 않습니다. 왜 모든 페이지에서 템플릿을 인쇄 할 수 없습니까? 나는 너무 궁금해! 당신에게

참고 감사합니다 단지 정보를 원하시면, 내가 기지 ... 추신을 확장 home.html을 불리는 또 다른 템플릿을 사용하여 설정에서 템플릿 dir을 정의했습니다 ... 다른 모든 템플릿은 여전히 ​​작동 중입니다.

답변

1

글쎄, 템플릿 태그 호출이 좋지 않습니다. 당신은 사용해야

{% show_topbar %} 

더 많은 정보를 : Documentation

1

당신은 변수 구문 대신에 태그를 호출하는 템플릿 태그 구문을 사용하고 있습니다. 다음을 수행해야합니다.

{% show_topbar %} 
관련 문제