2017-02-05 22 views
0

現在、Browsable APIは、自分のビューのクラス名からブレッドクラムを引き出すようです。Djangoのブレッドクラムをカスタマイズする方法REST Framework Browsable API

ルート/ユーザーリスト/ユーザー詳細/ユーザーリスト/ユーザー

しかし実際「ユーザーInvite'-ビューというディテールを招待招待:しかし、私はので、私のようなブレッドクラムを得ることができます私のAPIのためのネストされたリソースを使用しています再びユーザーがかなり冗長であることを示します。私はむしろ、パンくずリストが単に「招待リスト」と「招待詳細」になることを望んでいます。

ここで最も明らかな解決策は、ビュークラスの名前を変更するだけですが、同じ問題を共有するChatInviteListクラスとChatInviteDetailクラスがあるので、それは私にとってはオプションではありません。私はInviteDetailとInviteListの両方に名前を付けることはできません。

別の方法でこれらのブレッドクラムをカスタマイズする方法はありますか?たとえば、ビュークラスなどの変数を設定します。私はドキュメントを検索しようとしましたが、何も見つかりませんでした。

答えて

1

あなたがbreadcrumbsブロックを上書きする'rest_framework/base.html'を拡張'rest_framework/api.html'というテンプレート(docs)を書きます。参考のために、original blockは次のように見えます:

{% block breadcrumbs %} 
    <ul class="breadcrumb"> 
    {% for breadcrumb_name, breadcrumb_url in breadcrumblist %} 
     {% if forloop.last %} 
     <li class="active"><a href="{{ breadcrumb_url }}">{{ breadcrumb_name }}</a></li> 
     {% else %} 
     <li><a href="{{ breadcrumb_url }}">{{ breadcrumb_name }}</a></li> 
     {% endif %} 
    {% endfor %} 
    </ul> 
{% endblock %} 
+0

私はこれを見つけましたが、この場合はbreadcrumbsブロック全体を無効にしたくありません。私の目標では、breadcrumblistコンテキスト変数を上書きする方が良いでしょうが、どこから来たのか分かりませんでした。 –

+1

[BrowsableAPIRenderer](http://www.django-rest-framework.org/)をサブクラス化する[カスタムレンダラ](http://www.django-rest-framework.org/api-guide/renderers/)を作成します。 – schwobaseggl

+0

BrowsableAPIRendererを通して、名前を派生させた場所をよりよくトレースでき、最終的に私のビューが 'get_view_name'をオーバーライドするようにして問題を解決できることがわかりました。正しい方向に私を指してくれてありがとう! –