django admin 添加自定義鏈接方式
背景
最近做項目開發(fā)出現(xiàn)一個需求,就是前端會發(fā)來用戶對某一項內(nèi)容的報錯,報錯信息中包含出錯內(nèi)容的id,為了方便管理,需要實現(xiàn)點擊這個id直接轉(zhuǎn)達相應(yīng)內(nèi)容的詳情頁面。
效果展示
解決
首先在django admin的列表中查看數(shù)據(jù)id所代表的鏈接

使用瀏覽器的檢查元素功能查看點擊該id所跳轉(zhuǎn)的鏈接

現(xiàn)在我們知道點擊admin頁面跳轉(zhuǎn)鏈接的格式了。
自定義widget
假如我們的內(nèi)容id使用CharField字段存儲,那么可以這樣自定義一個widget
HTML
{% load myfileter %}
<a href="{{ widget.value|generate_link }}" rel="external nofollow" >{{ widget.value }}</a>
{%load myfilter%}是引入自定義模板標簽的語句,該標簽在下面定義。
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)
自定義模板過濾器
在views.py所在的目錄下新建一個文件夾templatetags,注意必須為這個名字。在文件夾中新建一個myfileter.py文件和_init_.py文件。
myfileter.py
# 生成自定義鏈接 @register.filter def generate_link(value): id = str(value) #就是將第二張圖片中的id替換為當前的id就行 return "/admin/learningsource/learningsource/" + id + "/change/"
自定義模型表單
假如我們的模型定義如下
class FeedbackModel(models.Model):
error_content_id=models.UUIDField("錯誤編號", primary_key=True, default=uuid.uuid4())
........
在models.py中定義一個ModelForm
class FeedbackModelForm(ModelForm):
error_content_id = forms.CharField(label="錯誤編號",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)建一個空的模型然后重寫它的changelist_view函數(shù)實現(xiàn)自定義鏈接,可以給admin界面的文字,圖片等添加鏈接(通過自定義widget就可實現(xiàn)),并且鏈接樣式可以自己定義,使用更方便。
在安全性上,本文的做法實際上相當于自己手動給django admin內(nèi)置視圖函數(shù)發(fā)送請求,和原來django自己自動生成的頁面鏈接沒有任何區(qū)別,對自定義鏈接的響應(yīng)實際上也要經(jīng)過**django ** admin的認證,安全性是沒問題的。
以上這篇django admin 添加自定義鏈接方式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
- Django-xadmin+rule對象級權(quán)限的實現(xiàn)方式
- django xadmin action兼容自定義model權(quán)限教程
- Django admin 實現(xiàn)search_fields精確查詢實例
- 解決django xadmin主題不顯示和只顯示bootstrap2的問題
- django xadmin中form_layout添加字段顯示方式
- django-xadmin根據(jù)當前登錄用戶動態(tài)設(shè)置表單字段默認值方式
- 在django admin詳情表單顯示中添加自定義控件的實現(xiàn)
- Django Admin設(shè)置應(yīng)用程序及模型順序方法詳解
相關(guān)文章
python 使用事件對象asyncio.Event來同步協(xié)程的操作
這篇文章主要介紹了python 使用事件對象asyncio.Event來同步協(xié)程的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05
Django項目中包含多個應(yīng)用時對url的配置方法
今天小編就為大家分享一篇Django項目中包含多個應(yīng)用時對url的配置方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05
python如何實現(xiàn)全角半角的相互轉(zhuǎn)換
這篇文章主要介紹了python如何實現(xiàn)全角半角的相互轉(zhuǎn)換方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11
Django admin model 漢化顯示文字的實現(xiàn)方法
今天小編就為大家分享一篇Django admin model 漢化顯示文字的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08

