Python 如何在Django REST框架可浏览API中自定义面包屑
目前,可浏览的API似乎从我的视图的类名派生面包屑。但是,我正在为我的API使用嵌套资源,因此我可以获得如下面包屑: 根/用户列表/用户详细信息/用户邀请列表/用户邀请详细信息 然而,“用户邀请”视图再次显示用户这一事实是相当多余的。我宁愿他们的面包屑只是“邀请列表”和“邀请细节” 现在最明显的解决方案当然是重命名视图类,但这不是我的选择,因为我还有类ChatInviteList和ChatInviteDetail,它们都有相同的问题。所以我不能把他们两个都命名为InviteDetail和InviteListPython 如何在Django REST框架可浏览API中自定义面包屑,python,django,django-rest-framework,Python,Django,Django Rest Framework,目前,可浏览的API似乎从我的视图的类名派生面包屑。但是,我正在为我的API使用嵌套资源,因此我可以获得如下面包屑: 根/用户列表/用户详细信息/用户邀请列表/用户邀请详细信息 然而,“用户邀请”视图再次显示用户这一事实是相当多余的。我宁愿他们的面包屑只是“邀请列表”和“邀请细节” 现在最明显的解决方案当然是重命名视图类,但这不是我的选择,因为我还有类ChatInviteList和ChatInviteDetail,它们都有相同的问题。所以我不能把他们两个都命名为InviteDetail和Invi
有没有办法用另一种方式定制这些面包屑?例如,在视图类中设置某个变量或其他内容。我尝试搜索文档,但找不到任何内容。编写一个名为
'rest\u framework/api.html'
()的模板,该模板扩展了'rest\u framework/base.html'
,其中覆盖了面包屑块。有关指导,请参见:
{%block breadcrumbs%}
{对于面包屑库名称,面包屑库url位于面包屑库列表%}
{%if-forloop.last%}
{%else%}
{%endif%}
{%endfor%}
{%endblock%}
是的,我确实找到了,但在这种情况下,我不想覆盖整个面包屑块。为了实现我的目标,最好重写breadcrumblist上下文变量,但我找不到该变量的来源。请编写一个子类,并重写get_breadcrumbs
;-)通过BrowsableapInderer,我可以更好地跟踪名称的来源,并最终发现我可以通过让我的视图覆盖get\u view\u name
来解决我的问题。谢谢你给我指明了正确的方向!此评论节省了通过DRF搜索的时间,谢谢!
{% 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 %}