亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

django admin 添加自定義鏈接方式

瀏覽:28日期:2024-10-21 17:54:57

背景

最近做項(xiàng)目開(kāi)發(fā)出現(xiàn)一個(gè)需求,就是前端會(huì)發(fā)來(lái)用戶(hù)對(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所代表的鏈接

django admin 添加自定義鏈接方式

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

django admin 添加自定義鏈接方式

現(xiàn)在我們知道點(diǎn)擊admin頁(yè)面跳轉(zhuǎn)鏈接的格式了。

自定義widget

假如我們的內(nèi)容id使用CharField字段存儲(chǔ),那么可以這樣自定義一個(gè)widget

HTML

{% load myfileter %}<a href='http://www.aoyou183.cn/bcjs/{{ 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.filterdef 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è)空的模型然后重寫(xiě)它的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è)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Django
相關(guān)文章:
主站蜘蛛池模板: www.尤物视频.com | 38pao强力打造永久免费高清视频 | 91啦视频在线观看 | 免费高清不卡毛片在线看 | 九九黄色 | 麻豆网站视频国产在线观看 | 日韩免费一级a毛片在线播放一级 | h录音 国产 在线 | 国产在线麻豆精品观看 | 亚洲色图欧美在线 | 国产精品久久久久久免费 | 日韩成人在线播放 | 成人资源网站 | 人妖欧美一区二区三区四区 | 女女互添下身免费视频 | 在线免费看黄色 | 99j久久精品久久久久久 | 性大特级毛片视频 | 成人免费视频视频在线不卡 | 二区三区在线观看 | 另类图片成人偷拍 | 视频一区二区三区在线观看 | 国产午夜精品片一区二区三区 | 成人18网址在线观看 | 青青草国产精品欧美成人 | 久久国产偷| 欧美大片毛片aaa免费看 | 国产欧美日韩不卡一区二区三区 | 欧美国产亚洲一区 | 一本毛片 | 婷婷资源综合 | 麻豆手机在线 | 欧美不卡二区 | 亚洲欧美日韩另类在线 | 免费的黄色的视频 | 国产妇女性爽视频免费 | 中文字幕永久在线观看 | 日韩亚洲欧洲在线com91tv | 欧美精品亚洲一区二区在线播放 | 午夜视频91 | 国产精品自在线拍 |