django admin 添加自定義鏈接方式
背景
最近做項(xiàng)目開(kāi)發(fā)出現(xiàn)一個(gè)需求,就是前端會(huì)發(fā)來(lái)用戶對(duì)某一項(xiàng)內(nèi)容的報(bào)錯(cuò),報(bào)錯(cuò)信息中包含出錯(cuò)內(nèi)容的id,為了方便管理,需要實(shí)現(xiàn)點(diǎn)擊這個(gè)id直接轉(zhuǎn)達(dá)相應(yīng)內(nèi)容的詳情頁(yè)面。
效果展示
解決
首先在django admin的列表中查看數(shù)據(jù)id所代表的鏈接
使用瀏覽器的檢查元素功能查看點(diǎn)擊該id所跳轉(zhuǎn)的鏈接
現(xiàn)在我們知道點(diǎn)擊admin頁(yè)面跳轉(zhuǎn)鏈接的格式了。
自定義widget
假如我們的內(nèi)容id使用CharField字段存儲(chǔ),那么可以這樣自定義一個(gè)widget
HTML
{% load myfileter %}
<a href="{{ widget.value|generate_link }}" rel="external nofollow" >{{ widget.value }}</a>
{%load myfilter%}是引入自定義模板標(biāo)簽的語(yǔ)句,該標(biāo)簽在下面定義。
python
class MyWidget(TextInput): template_name = "myWidget.html" def render(self, name, value, attrs=None, renderer=None): context = self.get_context(name, value, attrs) template = loader.get_template(self.template_name).render(context) return mark_safe(template)
自定義模板過(guò)濾器
在views.py所在的目錄下新建一個(gè)文件夾templatetags,注意必須為這個(gè)名字。在文件夾中新建一個(gè)myfileter.py文件和_init_.py文件。
myfileter.py
# 生成自定義鏈接 @register.filter def generate_link(value): id = str(value) #就是將第二張圖片中的id替換為當(dāng)前的id就行 return "/admin/learningsource/learningsource/" + id + "/change/"
自定義模型表單
假如我們的模型定義如下
class FeedbackModel(models.Model): error_content_id=models.UUIDField("錯(cuò)誤編號(hào)", primary_key=True, default=uuid.uuid4()) ........
在models.py中定義一個(gè)ModelForm
class FeedbackModelForm(ModelForm): error_content_id = forms.CharField(label="錯(cuò)誤編號(hào)",widget=MyWidget) class Meta: model = SourceLinkErrorReport fields = ['error_content_id',.....]
假如該模型在admin.py的模型管理器為
class FeedbackModelAdmin(admin.ModelAdmin):
..........
將上述定義的模型表單添加到模型管理器中
class FeedbackModelAdmin(admin.ModelAdmin):
form=FeedbackModelForm
..........
總結(jié)
使用這種方法可以不用創(chuàng)建一個(gè)空的模型然后重寫它的changelist_view函數(shù)實(shí)現(xiàn)自定義鏈接,可以給admin界面的文字,圖片等添加鏈接(通過(guò)自定義widget就可實(shí)現(xiàn)),并且鏈接樣式可以自己定義,使用更方便。
在安全性上,本文的做法實(shí)際上相當(dāng)于自己手動(dòng)給django admin內(nèi)置視圖函數(shù)發(fā)送請(qǐng)求,和原來(lái)django自己自動(dòng)生成的頁(yè)面鏈接沒(méi)有任何區(qū)別,對(duì)自定義鏈接的響應(yīng)實(shí)際上也要經(jīng)過(guò)**django ** admin的認(rèn)證,安全性是沒(méi)問(wèn)題的。
以上這篇django admin 添加自定義鏈接方式就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Django-xadmin+rule對(duì)象級(jí)權(quán)限的實(shí)現(xiàn)方式
- django xadmin action兼容自定義model權(quán)限教程
- Django admin 實(shí)現(xiàn)search_fields精確查詢實(shí)例
- 解決django xadmin主題不顯示和只顯示bootstrap2的問(wèn)題
- django xadmin中form_layout添加字段顯示方式
- django-xadmin根據(jù)當(dāng)前登錄用戶動(dòng)態(tài)設(shè)置表單字段默認(rèn)值方式
- 在django admin詳情表單顯示中添加自定義控件的實(shí)現(xiàn)
- Django Admin設(shè)置應(yīng)用程序及模型順序方法詳解
相關(guān)文章
Python腳本實(shí)現(xiàn)一鍵自動(dòng)整理辦公文件
這篇文章主要介紹了Python實(shí)現(xiàn)腳本一鍵自動(dòng)整理辦公文件,文件下載文件夾就變得亂七八糟,整理的時(shí)候非常痛苦,巴不得有一個(gè)自動(dòng)化的工具幫我歸類文檔。下面小編就給大家分享自動(dòng)化整理文件的小技巧,需要的朋友可以參考一下文章內(nèi)容2022-02-02詳解Python靜態(tài)網(wǎng)頁(yè)爬取獲取高清壁紙
這篇文章主要介紹了Python爬取高清壁紙,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04python?pandas分割DataFrame中的字符串及元組的方法實(shí)現(xiàn)
本文主要介紹了python?pandas分割DataFrame中的字符串及元組的方法實(shí)現(xiàn),主要介紹了3種方法,具有一定的參考價(jià)值,感興趣的可以了解一下2022-03-03Python實(shí)現(xiàn)雙軸組合圖表柱狀圖和折線圖的具體流程
這篇文章主要介紹了Python雙軸組合圖表柱狀圖+折線圖,Python繪制雙軸組合的關(guān)鍵在plt庫(kù)的twinx()函數(shù),具體實(shí)例代碼跟隨小編一起看看吧2021-08-08python3?cookbook解壓可迭代對(duì)象賦值給多個(gè)變量的問(wèn)題及解決方案
這篇文章主要介紹了python3?cookbook-解壓可迭代對(duì)象賦值給多個(gè)變量,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2024-01-01Python中bytes字節(jié)串和string字符串之間的轉(zhuǎn)換方法
python中字節(jié)字符串不能格式化,獲取到的網(wǎng)頁(yè)有時(shí)候是字節(jié)字符串,需要轉(zhuǎn)化后再解析,下面這篇文章主要給大家介紹了關(guān)于Python中bytes字節(jié)串和string字符串之間的轉(zhuǎn)換方法,需要的朋友可以參考下2022-01-01Python實(shí)現(xiàn)經(jīng)典算法拓?fù)渑判?、字符串匹配算法和最小生成?shù)實(shí)例
這篇文章主要介紹了Python實(shí)現(xiàn)經(jīng)典算法拓?fù)渑判?、字符串匹配算法和最小生成?shù)實(shí)例,拓?fù)渑判颉⒆址ヅ渌惴ê妥钚∩蓸?shù)是計(jì)算機(jī)科學(xué)中常用的數(shù)據(jù)結(jié)構(gòu)和算法,它們?cè)诮鉀Q各種實(shí)際問(wèn)題中具有重要的應(yīng)用價(jià)值,需要的朋友可以參考下2023-08-08