-1

ここでこの django プラグインを使用しています: https://github.com/chronossc/django-breadcrumbs

しかし、実際にブレッドクラムの配列があるかどうか、テンプレートをチェックインできないようです...私は試しました:

{%if request.breadcrumbs%} {% if request.breadcrumbs|length > 0%} 

などなど… しかし、あるのかどうかを本当に教えてくれるものは何もありません。

ブレッドクラムを渡した場合はこのバーを表示し、ビューにブレッドクラムを渡さなかった場合は表示しないようにします。

{% if request.breadcrumbs|length > 0 %}
<div class="navbar navbar-fixed-top" style="top:38px;z-index:1029;" id="breadcrumb-sticky-header">
    <div class="container">
        <div class="container-fluid">
            <div class="row-fluid">
                <ul id="breadcrumb-sticky-header-inner" class="breadcrumb">
                    {% for breadcrumb in request.breadcrumbs %}
                    {% if not forloop.last %}
                    <li><a href="{{ breadcrumb.url }}">{{ breadcrumb.name }}</a> <span class="divider">/</span></li> 
                    {% else %}
                    <li class="active">{{ breadcrumb.name }}</li> 
                    {% endif %}
                    {% endfor %}
                </ul>
            </div>
        </div>
    </div>
</div>
{% endif %}

これが私の見解のコードです:

@login_required
def view(request, t_id):
    try:
        tshoot = Troubleshoot.objects.select_related('category', 'equipment', 'equipment__model').get(pk=t_id)
        request.breadcrumbs([
            (("%s: %s" % (tshoot.equipment.model.name, tshoot.equipment.serial)),
                '/equipment/view/%s/' % (tshoot.equipment.id)),
            (("%s" % (tshoot.category.name)),
                '/troubleshoot/categories/view/%s/' % (tshoot.category.id)),
            ((tshoot.title), '')
        ])
4

2 に答える 2

1

django-breadcrumbs プロジェクトのコードに基づいて (breadcrumbs.py の 191 行目: https://github.com/chronossc/django-breadcrumbs/blob/master/breadcrumbs/breadcrumbs.py#L191 )、彼らのように見えますメソッドを実装しました.all()

次のように、メソッド|lengthの結果に対してテンプレート フィルターを使用して、必要な結果を取得できるはずです。.all()

{% if request.breadcrumbs and request.breadcrumbs.all|length > 0 %}

これはテストしていません。これは、私の簡単なコード検査で明らかになったものです。

于 2012-11-06T18:26:02.343 に答える
0

よくわかりませんrequest.breadcrumbs|length > 0が、サンプル テンプレートを使用します。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""
"http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8">

        <title>Breadcrumbs test page | {% for b in request.breadcrumbs %}{{ b.name }}{% if not forloop.last %} > {% endif %}{% endfor %}</title>

    </head>
    <body>
        {{ request.breadcrumbs }}
        <p>Breadcrumb: {% for b in request.breadcrumbs %}<a href="{{ b.url }}">{{ b.name }}</a>{% if not forloop.last %} / {% endif %}{% endfor %}</p>
        <p>Links: <a href='/'>Home</a> | <a href='/someview/'>Breadcrumb in view</a> | <a href='/flat01/'>Flatpages</a>
        <p>Content: <br>
        {% if text %}{{ text }}{% endif %}
        {% if flatpage %}{{ flatpage.content }}{% endif %}
    </body>
</html>

それがどのように機能するかに慣れるまで見てください:

# Create your views here.

from django.shortcuts import render_to_response
from django.template.context import RequestContext


def home(request):
    print request.breadcrumbs
    return render_to_response('home.html',
        {'text': 'Hello, this is home!'},
        context_instance=RequestContext(request))


def someview(request):
    request.breadcrumbs('just a view to show some url', request.path)

    return render_to_response('home.html',
        {'text': 'Hello, this is some second view'},
        context_instance=RequestContext(request))

(から: https://github.com/chronossc/django-breadcrumbs/blob/master/breadcrumbs_sample )

于 2012-11-06T18:25:12.140 に答える