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使用paramiko模块实现ssh远程登陆上传文件并执行
Jan 27 Python
Python实现二分查找算法实例
May 26 Python
Python使用正则表达式实现文本替换的方法
Apr 18 Python
Python中的错误和异常处理简单操作示例【try-except用法】
Jul 25 Python
pip install python 快速安装模块的教程图解
Oct 08 Python
Python绘制二维曲线的日常应用详解
Dec 04 Python
win10安装tensorflow-gpu1.8.0详细完整步骤
Jan 20 Python
pytorch中使用cuda扩展的实现示例
Feb 12 Python
python3 deque 双向队列创建与使用方法分析
Mar 24 Python
Python爬虫requests库多种用法实例
May 28 Python
浅谈Python类的单继承相关知识
May 12 Python
Python异常类型以及处理方法汇总
Jun 05 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
PHP经典的给图片加水印程序
2006/12/06 PHP
给apache2.2加上mod_encoding模块後 php5.2.0 处理url出现bug
2007/04/12 PHP
PHP开发微信支付的代码分享
2014/05/25 PHP
兼容各大浏览器带关闭按钮的漂浮多组图片广告代码
2014/06/05 PHP
php使用iconv中文截断问题的解决方法
2015/02/11 PHP
验证token、回复图文\文本、推送消息的实用微信类php代码
2016/06/28 PHP
PHP-FPM的配置与优化讲解
2019/03/15 PHP
ThinkPHP5与单元测试PHPUnit使用详解
2020/02/23 PHP
PHP获取当前时间不准确问题解决方案
2020/08/14 PHP
如何运行/调试你的PHP代码
2020/10/23 PHP
Jquery工作常用实例 使用AJAX使网页进行异步更新
2011/07/26 Javascript
基于jquery插件实现常见的幻灯片效果
2013/11/01 Javascript
node.js 开发指南 ? Node.js 连接 MySQL 并进行数据库操作
2014/07/29 Javascript
jQuery根据ID获取input、checkbox、radio、select的示例
2014/08/11 Javascript
javascript中Function类型详解
2015/04/28 Javascript
JavaScript学习小结之被嫌弃的eval函数和with语句实例详解
2016/08/01 Javascript
js获取地址栏参数的两种方法
2017/06/27 Javascript
Bootstrap3.3.7导航栏下拉菜单鼠标滑过展开效果
2017/10/31 Javascript
Node.js 使用request模块下载文件的实例
2018/09/05 Javascript
Element Rate 评分的使用方法
2020/07/27 Javascript
vue+element获取el-table某行的下标,根据下标操作数组对象方式
2020/08/07 Javascript
[01:31:22]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第二场 1月10日
2021/03/11 DOTA
CentOS 6.5下安装Python 3.5.2(与Python2并存)
2017/06/05 Python
Python线程创建和终止实例代码
2018/01/20 Python
Pythony运维入门之Socket网络编程详解
2019/04/15 Python
python用线性回归预测股票价格的实现代码
2019/09/04 Python
Python识别html主要文本框过程解析
2020/02/18 Python
实例讲解利用HTML5 Canvas API操作图形旋转的方法
2016/03/22 HTML / CSS
基于HTML5实现类似微信手机摇一摇功能(计算摇动次数)
2017/07/24 HTML / CSS
管理部部长岗位职责
2013/12/05 职场文书
企业新年寄语
2014/04/04 职场文书
会计学专业求职信
2014/07/17 职场文书
玩手机检讨书1000字
2014/10/20 职场文书
离婚协议书范文
2015/01/26 职场文书
南京南京观后感
2015/06/02 职场文书
解决SpringBoot跨域的三种方式
2021/06/26 Java/Android