django admin 添加自定义链接方式


Posted in Python onMarch 11, 2020

背景

最近做项目开发出现一个需求,就是前端会发来用户对某一项内容的报错,报错信息中包含出错内容的id,为了方便管理,需要实现点击这个id直接转达相应内容的详情页面。

效果展示

解决

首先在django admin的列表中查看数据id所代表的链接

django admin 添加自定义链接方式

使用浏览器的检查元素功能查看点击该id所跳转的链接

django admin 添加自定义链接方式

现在我们知道点击admin页面跳转链接的格式了。

自定义widget

假如我们的内容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
..........

总结

使用这种方法可以不用创建一个空的模型然后重写它的changelist_view函数实现自定义链接,可以给admin界面的文字,图片等添加链接(通过自定义widget就可实现),并且链接样式可以自己定义,使用更方便。

在安全性上,本文的做法实际上相当于自己手动给django admin内置视图函数发送请求,和原来django自己自动生成的页面链接没有任何区别,对自定义链接的响应实际上也要经过**django ** admin的认证,安全性是没问题的。

以上这篇django admin 添加自定义链接方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
教你如何在Django 1.6中正确使用 Signal
Jun 22 Python
python批量制作雷达图的实现方法
Jul 26 Python
利用Python脚本实现ping百度和google的方法
Jan 24 Python
Python使用PIL模块生成随机验证码
Nov 21 Python
CentOS下Python3的安装及创建虚拟环境的方法
Nov 28 Python
深入解析python中的实例方法、类方法和静态方法
Mar 11 Python
python Django编写接口并用Jmeter测试的方法
Jul 31 Python
django商品分类及商品数据建模实例详解
Jan 03 Python
浅谈keras使用预训练模型vgg16分类,损失和准确度不变
Jul 02 Python
Python 可视化神器Plotly详解
Dec 26 Python
PyTorch 如何设置随机数种子使结果可复现
May 12 Python
PyTorch device与cuda.device用法
Apr 03 Python
django xadmin 管理器常用显示设置方式
Mar 11 #Python
django从后台返回html代码的实例
Mar 11 #Python
Django-xadmin后台导入json数据及后台显示信息图标和主题更改方式
Mar 11 #Python
python3 实现口罩抽签的功能
Mar 11 #Python
python+selenium 脚本实现每天自动登记的思路详解
Mar 11 #Python
Django+boostrap 美化admin后台的操作
Mar 11 #Python
Windows 下python3.8环境安装教程图文详解
Mar 11 #Python
You might like
ThinkPHP函数详解之M方法和R方法
2015/09/10 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
ExtJS 简介 让你知道extjs是什么
2008/12/29 Javascript
使用隐藏的new来创建对象
2011/03/29 Javascript
基于jQuery实现的水平和垂直居中的div窗口
2011/08/08 Javascript
jquery增加时编辑jqGrid(实例代码)
2013/11/08 Javascript
Javascript this 函数深入详解
2016/12/13 Javascript
js实现带三角符的手风琴效果
2017/03/01 Javascript
bootstrap table sum总数量统计实现方法
2017/10/29 Javascript
react实现一个优雅的图片占位模块组件详解
2017/10/30 Javascript
利用jqgrid实现上移下移单元格功能
2018/11/07 Javascript
在Vue中使用icon 字体图标的方法
2019/06/14 Javascript
javascript写一个ajax自动拦截并下载数据代码实例
2019/09/07 Javascript
taro 实现购物车逻辑的实例代码
2020/06/05 Javascript
小程序实现点击tab切换左右滑动
2020/11/16 Javascript
vue+iview实现文件上传
2020/11/17 Vue.js
[50:15]VP vs Mineski 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
python基础教程之获取本机ip数据包示例
2014/02/10 Python
在Python的web框架中编写创建日志的程序的教程
2015/04/30 Python
分析Python中解析构建数据知识
2018/01/20 Python
Ubuntu下使用python读取doc和docx文档的内容方法
2018/05/08 Python
python dataframe常见操作方法:实现取行、列、切片、统计特征值
2018/06/09 Python
Python检查和同步本地时间(北京时间)的实现方法
2018/12/03 Python
python实现Flappy Bird源码
2018/12/24 Python
Python安装selenium包详细过程
2019/07/23 Python
Pytorch中的VGG实现修改最后一层FC
2020/01/15 Python
Python colormap库的安装和使用详情
2020/10/06 Python
Python+logging输出到屏幕将log日志写入文件
2020/11/11 Python
美国美妆网站:B-Glowing
2016/10/12 全球购物
Expedia意大利旅游网站:酒店、机票和租车预订
2017/10/30 全球购物
十一个高级MySql面试题
2014/10/06 面试题
热爱祖国的演讲稿
2014/05/04 职场文书
大学迎新生标语
2014/10/06 职场文书
三峡大坝导游词
2015/01/31 职场文书
幼儿园端午节活动总结
2015/05/05 职场文书
闪闪的红星观后感
2015/06/08 职场文书