django admin 添加自定義頁面

在Django中,你可以通過多種方式向Django Admin添加自定義頁面。以下是一些常見的方法:

方法1:使用ModelAdmin的get_urls()方法
如果你只是想添加一個簡單的頁面來展示信息,你可以在你的ModelAdmin類中重寫get_urls()方法。

from django.urls import path
from django.utils.safestring import mark_safe
from django.contrib import admin
from .models import MyModelclass MyModelAdmin(admin.ModelAdmin):def get_urls(self):urls = super().get_urls()my_urls = [path('my-custom-view/', self.admin_site.admin_view(self.my_custom_view))]return my_urls + urlsdef my_custom_view(self, request):return mark_safe('<h1>這是一個自定義頁面</h1>')admin.site.register(MyModel, MyModelAdmin)

方法2:使用SimpleListFilter添加自定義鏈接
如果你想要在列表頁旁邊添加一些自定義鏈接,可以使用SimpleListFilter。

from django.contrib import admin
from django.utils.safestring import mark_safe
from .models import MyModelclass CustomLinkListFilter(admin.SimpleListFilter):title = 'custom links'template = 'admin/filter.html'def has_output(self):return Truedef choices(self, changelist):yield {'selected': changelist.get_query_string({}),'query_string': changelist.get_query_string({}),'display': '自定義鏈接'}def queryset(self, request, queryset):return querysetdef output(self, changelist):return mark_safe('<a href="/admin/myapp/mymodel/my-custom-view/">自定義頁面</a>')class MyModelAdmin(admin.ModelAdmin):list_filter = (CustomLinkListFilter,)admin.site.register(MyModel, MyModelAdmin)

方法3:使用admin_site.index和admin_site.app_index裝飾器添加頁面到主索引頁或應用索引頁
你可以通過重寫index和app_index視圖來添加自定義頁面。例如,如果你想在應用的主頁旁邊添加一個鏈接:

from django.contrib import admin
from django.urls import path, reverse, NoReverseMatch
from django.utils.safestring import mark_safe
from .models import MyModelclass MyModelAdmin(admin.ModelAdmin):pass  # 實現你的自定義邏輯,例如列表展示或表單等。admin.site.register(MyModel, MyModelAdmin)@admin.register(MyModel)  # 使用裝飾器注冊模型和它的管理員類(如果你的Django版本支持)
class MyModelAdmin(admin.ModelAdmin):pass  # 實現你的自定義邏輯,例如列表展示或表單等。

然后,你可以通過修改urls.py來添加自定義視圖:

from django.urls import path, include, re_path
from django.contrib import admin
from .views import custom_view  # 確保導入你的視圖函數或類視圖。urlpatterns = [path('admin/', admin.site.urls),path('admin/myapp/mymodel/my-custom-view/', custom_view, name='custom-view'),  # 添加自定義URL路徑和視圖。
] + admin.site.urls  # 注意這里的順序很重要,確保先包含你的自定義路徑再包含admin的默認路徑。

在views.py中定義你的視圖:

from django.shortcuts import render
from django.http import HttpResponse
from django.utils.safestring import mark_safe
from django.contrib.admin.views.decorators import staff_member_required  # 如果需要限制訪問權限。
from django.contrib.auth.decorators import login_required  # 如果需要登錄才能訪問。
from django.views.decorators.cache import never_cache  # 防止緩存。
from django.views.decorators.csrf import csrf_protect  # 保護CSRF。 如果你使用的是類視圖,可以在類中添加。 例如: @method_decorator([login_required, staff

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/77391.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/77391.shtml
英文地址,請注明出處:http://en.pswp.cn/web/77391.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Docker容器持久化

引言 Docker 容器作為一種輕量級、可移植的虛擬化技術&#xff0c;廣泛應用于開發、測試和生產環境中。然而&#xff0c;容器天生是短暫的&#xff0c;意味著它們在生命周期結束后會被銷毀&#xff0c;而其中的數據也會隨之丟失。為了確保容器中的數據能夠持久化&#xff0c;我…

ShaderToy學習筆記 02.圓

1. 畫圓 1.1. 圓的方程 圓的方程是&#xff1a;(x^2 y^2 r^2)&#xff0c;其中(r)是圓的半徑。 我們可以使用 desmos 來驗證一下。 輸入 x^2 y^2 -10&#xff0c;即可得到圓。 類似下圖 1.2. 畫圓的方式 畫圓&#xff1a;使用圓的方程&#xff0c;判斷每個像素點是否在圓…

一文詳解卷積神經網絡中的卷積層和池化層原理 !!

文章目錄 前言 一、卷積核大小&#xff08;Kernel Size&#xff09; 1. 卷積核大小的作用 2. 常見的卷積核大小 3. 選擇卷積核大小的原則 二、步長&#xff08;Stride&#xff09; 1. Stride的作用 三、填充&#xff08;Padding&#xff09; 1. 填充的作用 四、通道數&#xff…

云+AI雙輪驅動,亞馬遜云科技加速中國企業出海新浪潮

導讀&#xff1a;全球化就是本地化 作者 | 小葳 圖片來源 | 攝圖 近年來&#xff0c;中國企業出海步伐不斷加快&#xff0c;“不出海&#xff0c;就出局”成為很多企業的共識。 據沙利文統計&#xff0c;2024年上半年&#xff0c;超過2000家中國上市企業布局海外市場&#xff…

C語言HashTable基本理解

文章目錄 一、哈希表概念1. 哈希表的基本概念2. 哈希表的核心組件2.1 哈希函數2.2 沖突處理&#xff08;哈希碰撞&#xff09; 3.哈希表的三種結構(1) 數組作為哈希表示例&#xff1a; 2. Set&#xff08;集合&#xff09;示例&#xff1a;查找數組中的重復元素1. Set 基礎概念…

【緩存與數據庫結合最終方案】偽從技術

實現偽從技術&#xff1a;基于Binlog的Following表變更監聽與緩存更新 技術方案概述 要實現一個專門消費者服務作為Following表的偽從&#xff0c;訂閱binlog并在數據變更時更新緩存&#xff0c;可以采用以下技術方案&#xff1a; 主要組件 MySQL Binlog監聽&#xff1a;使…

《100天精通Python——基礎篇 2025 第3天:變量與數據類型全面解析,掌握Python核心語法》

目錄 一、Python變量的定義和使用二、Python整數類型&#xff08;int&#xff09;詳解三、Python小數/浮點數&#xff08;float&#xff09;類型詳解四、Python復數類型(complex)詳解---了解五、Python字符串詳解(包含長字符串和原始字符串)5.1 處理字符串中的引號5.2 字符串的…

【前后端分離項目】Vue+Springboot+MySQL

文章目錄 1.安裝 Node.js2.配置 Node.js 環境3.安裝 Node.js 國內鏡像4.創建 Vue 項目5.運行 Vue 項目6.訪問 Vue 項目7.創建 Spring Boot 項目8.運行 Spring Boot 項目9.訪問 Spring Boot 項目10.實現 Vue 與 Spring Boot 聯動11.安裝 axios12.編寫請求13.調用函數請求接口14.…

線性代數(一些別的應該關注的點)

一、矩陣 矩陣運算&#xff1a;線性變換 縮放、平移、旋轉 無所不能的矩陣 - 三維圖形變換_嗶哩嗶哩_bilibili

01Redis快速入門(nosql、安裝redis、客戶端、命令及類型、java客戶端、序列化)

Redis的常見命令和客戶端使用 1.初識Redis Redis是一種鍵值型的NoSql數據庫&#xff0c;這里有兩個關鍵字&#xff1a; 鍵值型 NoSql 其中鍵值型&#xff0c;是指Redis中存儲的數據都是以key、value對的形式存儲&#xff0c;而value的形式多種多樣&#xff0c;可以是字符串…

AI編程:[體驗]從 0 到 1 開發一個項目的初體驗

一、開發信息 開發時間&#xff1a;1.5-2天工具使用&#xff1a; 不熟練&#xff0c;開發本項目前1天&#xff0c;才簡單使用了Cursor的功能 功能復雜度&#xff1a; 開發的功能相對簡單。頁面&#xff1a;2個&#xff0c;登錄頁面&#xff0c;個人中心頁面功能&#xff1a;5個…

LeetCode-392 判斷子序列

給定字符串 s 和 t &#xff0c;判斷 s 是否為 t 的子序列。 字符串的一個子序列是原始字符串刪除一些&#xff08;也可以不刪除&#xff09;字符而不改變剩余字符相對位置形成的新字符串。&#xff08;例如&#xff0c;"ace"是"abcde"的一個子序列&#…

Linux 系統監控大師:Glances 工具詳解助力自動化

看圖猜詩&#xff0c;你有任何想法都可以在評論區留言哦~ 摘要 Glances 是一款基于 Python 開發的跨平臺系統監控工具&#xff0c;集成了 CPU、內存、磁盤、網絡、進程等核心指標的實時監控能力&#xff0c;并支持命令行、Web界面、客戶端-服務器模式等多種使用場景。其輕量級…

Spring Boot 3.4.5 運行環境需求

&#x1f4dd; Spring Boot 3.4.5 運行環境要求 &#x1f33f; 1?? 基本需求 ?? JDK版本&#xff1a;最低 Java 17 &#x1f517; https://www.java.com/ 最高兼容至 Java 24 ?? 依賴框架&#xff1a;需搭配 Spring Framework 6.2.6 &#x1f517; https://docs.sprin…

在KEIL里C51和MDK兼容以及添加ARM compiler5 version編譯器

前言 我們想在一個keil里面可以打開32和51的文件&#xff0c;這樣就不需要兩個keil了 還有就是現在的keil&#xff0c;比如我用的是5.41的&#xff0c;就沒有5版本的處理器&#xff0c;所以要安裝 本篇文章我們來詳細講解如何實現上面說的兩個內容 準備的東西 1.ARM5編譯器 …

Flutter 彈窗隊列管理:支持優先級的線程安全通用彈窗隊列系統

在復雜的 Flutter 應用開發中&#xff0c;彈窗管理是一個常見難題。手動管理彈窗的顯示順序和條件判斷不僅繁瑣&#xff0c;還容易出錯。為此&#xff0c;我們實現了一個支持優先級的線程安全通用彈窗隊列管理系統。它能夠自動管理彈窗的顯示順序&#xff0c;支持條件判斷&…

鴻蒙NEXT開發剪貼板工具類(ArkTs)

import { pasteboard } from kit.BasicServicesKit; import { StrUtil } from ./StrUtil;/*** 剪貼板工具類* 需要權限&#xff1a;* ohos.permission.READ_PASTEBOARD // 允許應用讀取剪貼板。* author CSDN-鴻蒙布道師* since 2025/04/25*/ export class PasteboardUtil {…

FastAPI 零基礎入門指南:10 分鐘搭建高性能 API

一、為什么選擇 FastAPI&#xff1f; 想象一下&#xff0c;用 Python 寫 API 可以像搭積木一樣簡單&#xff0c;同時還能擁有媲美 Go 語言的性能&#xff0c;這個框架憑借三大核心優勢迅速風靡全球&#xff1a; 開發效率提升 3 倍&#xff1a;類型注解 自動文檔&#xff0c;…

【算法】BFS-解決FloodFill問題

目錄 FloodFill問題 圖像渲染 島嶼數量 島嶼的最大面積 被圍繞的區域 FloodFill問題 FloodFill就是洪水灌溉的意思&#xff0c;假設有下面的一塊田地&#xff0c;負數代表是凹地&#xff0c;正數代表是凸地&#xff0c;數字的大小表示凹或者凸的程度。現在下一場大雨&…

代碼隨想錄算法訓練營第三十七天|動態規劃part4

1049. 最后一塊石頭的重量 II 題目鏈接&#xff1a; 1049. 最后一塊石頭的重量 II - 力扣&#xff08;LeetCode&#xff09; 文章講解&#xff1a; 代碼隨想錄 思路&#xff1a; 理解為把石頭分成兩堆 使得兩堆的差值盡可能小 求這個最小值1 理解為往背包里裝物品 每個物品的…