Django實現自訂template頁面並在admin site的app模組中加入自訂跳轉連結(二)

來源:互聯網
上載者:User

標籤:none   這一   圖片   blog   ref   分享   pre   info   沒有   

在文章 Django實現自訂template頁面並在admin site的app模組中加入自訂跳轉連結(一) 中我們成功的為/feedback/feedback_stats/路徑自訂了使用template文法的html檔案,完成了通過相應連結跳轉到自訂統計頁面的功能,但是沒能夠在admin site中FEEDBACK app模組下成功的添加顯示的跳轉連結,使使用者想要訪問自訂連結時無法從admin site頁面方便、快速的跳轉過去。

Django作為一個廣泛使用、已經相當成熟的web 架構,當然應該支援admin site頁面添加自訂連結的功能,只不過Django新手沒有看過相關資料的話,很難想到應該如何?這一功能,我自己之前在網上也是找了很久的資料,不知道是問題描述不對,還是這方面資料確實很少,並沒能從網上找到正確的實現方法,最近經過同事的指教,才恍然大悟。

思路:要在admin site中添加一個自訂的跳轉連結,首先考慮要如何才能在對應的app下添加一個新的跳轉連結,這裡以FEEDBACK模組為例,什麼情況會導致其下會產生新的跳轉串連呢?最常見的情況顯然就是在其下增加一個對資料庫進行映射的model,以及對應的modeladmin,那麼是不是可以把這個對應資料表model的跳轉連結重新導向到我們自訂的連結呢?這樣問題就轉化成了admin site中modeladmin的跳轉連結是否可以重載的問題,這也正是在admin site某個app模組下添加自訂跳轉連結的解決方案,即對modeladmin的預設跳轉行為進行重寫,使其指向自訂的跳轉頁面,從而實現app模組下增加自訂跳轉連結的功能。

由於對應的資料表model其實只是提供了一個產生admin site下跳轉連結的功能,其實際並沒有被訪問過,所以並不需要為其定義任何實際欄位,構造一個空的fake model即可,如下為models.py中對應fake model的代碼:

class Feedback_Stat(models.Model):    pass

這個是admin.py中對應FeedbackStatsAdmin的代碼,其重寫了modeladmin負責預設頁面渲染行為的changelist_view函數實現了對自訂頁面的渲染:

from django.contrib import adminfrom django.shortcuts import renderfrom models import Feedback, Feedback_Statfrom views import feedback_stats@admin.register(Feedback_Stat)class FeedbackStatsAdmin(admin.ModelAdmin):    def changelist_view(self, request, extra_content=None):        return feedback_stats(request)

 

添加如上代碼後,admin site頁面如下:

其中Feedback_stats即是代表對應FeedbackStatsAdmin的連結,點擊後由於重寫了其changelist_view方法,其將會跳轉到使用者自訂的feedback_stats頁面:

 

Django實現自訂template頁面並在admin site的app模組中加入自訂跳轉連結(二)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.