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 相关文章推荐
Python 中开发pattern的string模板(template) 实例详解
Apr 01 Python
python实现感知器
Dec 19 Python
Django学习笔记之ORM基础教程
Mar 27 Python
python opencv 图像尺寸变换方法
Apr 02 Python
Python模块汇总(常用第三方库)
Oct 07 Python
解析Python3中的Import
Oct 13 Python
pytorch 指定gpu训练与多gpu并行训练示例
Dec 31 Python
零基础小白多久能学会python
Jun 22 Python
使用Dajngo 通过代码添加xadmin用户和权限(组)
Jul 03 Python
详解Python3 定义一个跨越多行的字符串的多种方法
Sep 06 Python
Python eval函数介绍及用法
Nov 09 Python
Python实战之实现简易的学生选课系统
May 25 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
PDO版本问题 Invalid parameter number: no parameters were bound
2013/01/06 PHP
8个必备的PHP功能实例代码
2013/10/27 PHP
PHP排序算法类实例
2015/06/17 PHP
laravel学习教程之存取器
2016/07/30 PHP
Javascript 代码也可以变得优美的实现方法
2009/06/22 Javascript
javascript引用类型之时间Date和数组Array
2015/08/27 Javascript
jQuery实用技巧必备(下)
2015/11/03 Javascript
JS面向对象编程详解
2016/03/06 Javascript
jQuery文件上传控件 Uploadify 详解
2016/06/20 Javascript
JavaScript使用forEach()与jQuery使用each遍历数组时return false 的区别
2016/08/26 Javascript
微信小程序使用第三方库Immutable.js实例详解
2016/09/27 Javascript
Javascript中内建函数reduce的应用详解
2016/10/20 Javascript
vue构建单页面应用实战
2017/04/10 Javascript
Node.JS更改Windows注册表Regedit的方法小结
2017/08/18 Javascript
使用vue与jquery实时监听用户输入状态的操作代码
2017/09/19 jQuery
jackson解析json字符串,首字母大写会自动转为小写的方法
2017/12/22 Javascript
微信小程序实现带缩略图轮播效果
2018/11/04 Javascript
JQuery 实现文件下载的常用方法分析
2019/10/29 jQuery
js实现秒表计时器
2019/12/16 Javascript
vue实现选中效果
2020/10/07 Javascript
python实现挑选出来100以内的质数
2015/03/24 Python
Python Flask-web表单使用详解
2017/11/18 Python
Python绘制3D图形
2018/05/03 Python
Tensorflow中的placeholder和feed_dict的使用
2018/07/09 Python
用python做游戏的细节详解
2019/06/25 Python
解决tensorflow训练时内存持续增加并占满的问题
2020/01/19 Python
TensorFlow2.1.0最新版本安装详细教程
2020/04/08 Python
详解Python流程控制语句
2020/10/28 Python
加拿大在线隐形眼镜和眼镜店:VisionPros
2019/10/06 全球购物
优秀生推荐信范文
2013/11/28 职场文书
服装机修工岗位职责
2013/12/26 职场文书
写给妈妈的道歉信
2014/01/11 职场文书
工商管理专业自荐信
2014/06/03 职场文书
小学生暑假安全保证书
2015/07/13 职场文书
2016大学生暑期社会实践心得体会
2016/01/14 职场文书
JAVA API 实用类 String详解
2021/10/05 Java/Android