本文介紹個(gè)人學(xué)習(xí)和使用的在Django Admin中添加按鈕的多種方法
歡迎大家一起討論
一被廓、添加按鈕
其實(shí)添加按鈕鲜棠,鏈接,甚至一個(gè)form都是一個(gè)原理滚婉,就是加入一段HTML,關(guān)鍵是把這段html放在哪里
- 添加到對(duì)象工具 object tools 區(qū)域
修改模板的最佳實(shí)踐是不要替換原始模板吨拗,而是載入原始模板满哪,然后覆蓋 override 需要的 block
- 添加到對(duì)象工具 object tools 區(qū)域
框架的的 change list 如下婿斥,其中{% change_list_object_tools %}
的html是 ModelAdmin 自帶的 view 提供了:
# Django change_list.html
{% block object-tools %}
<ul class="object-tools">
{% block object-tools-items %}
{% change_list_object_tools %}
{% endblock %}
</ul>
{% endblock %}
我們只要把我們需要的加在它的后面即可劝篷,可以用 {{ block.super }}
載入父模塊的代碼,即 {% change_list_object_tools %}
# myapp/sample/change_list.html
{% extends 'admin/change_list.html' %}
{% load i18n admin_static %}
{% block object-tools-items %}
{{ block.super }}
<li>
<a href="{% url 'admin:index' %}">Import</a>
</li>
{% endblock %}
通知Admin Class 使用模板民宿,如果放的位置和嚴(yán)格按照規(guī)則起名的話娇妓,也可以省略這行,具體可參考Django Template 命名和查找規(guī)則的官方文檔活鹰。
class SampleAdmin(admin.ModelAdmin):
change_list_template = 'myapp/sample/change_list.html'
結(jié)果入下:(這兩個(gè)按鈕所在的區(qū)域就是對(duì)象工具塊)
1554522731123.png
- 2. Add to every object in Change List
- 3. Add to the object add / change form
二哈恰、添加自定義views
以上添加了按鈕只是能顯示,額外信息志群,能跳轉(zhuǎn)着绷,能提交表單
但很多情況下我們還需要自己寫額外的view 來處理這些提交,甚至顯示結(jié)果在 Admin Site 并保持無外觀和交互的一致性锌云。
這是下一步要寫的東西……