0

サイト内のすべてのバーを構築するためのテンプレートタグを作成しようとしています。すべてのドキュメントに従いましたが、まだ機能していません。

私はアプリ「バー」を作成し、 /bar/ の settings.py でアプリに追加しました

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

/templates/ 内 -- top_bar.html

今 nav_bar.py は次のとおりです。

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>

(代わりに非常に単純なテンプレートを使用してみましたが、結果は変わりません)

今base.htmlに私はtemplatetagをロードしました

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

テンプレートを印刷しました

 {{ show_topbar }}

...バーを置きたかった場所。非常に非常に単純に見えますが、出力はエラーなしで何もありません。テンプレート top_bar.html を削除しても、何も変わらず、エラーはありません...テンプレート名を変更しても、エラーはありません...

私見問題はレジスタの包含にあります...もともと私はいくつかのresponse_to_renderを代わりに使用したかったのですが、ドキュメントの例ではrenderを使用していません。テンプレートをすべてのページに印刷できないのはなぜですか? 私はとても好奇心が強い!ありがとうございました

注:参考までに、ベースを拡張するhome.htmlという別のテンプレートを使用します...設定でpsテンプレートディレクトリを定義しました...他のすべてのテンプレートはまだ機能しています。

4

2 に答える 2

1

さて、あなたのテンプレートタグへの呼び出しは良くありません。以下を使用する必要があります。

{% show_topbar %}

詳細情報:ドキュメント

于 2013-08-30T09:35:42.047 に答える
1

テンプレート タグ構文の代わりに変数構文を使用して、タグを呼び出しています。これを行う必要があります:

{% show_topbar %}
于 2013-08-30T09:35:43.793 に答える