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实现简单的可逆加密程序实例
Mar 05 Python
Python求两个文本文件以行为单位的交集、并集与差集的方法
Jun 17 Python
Python中绑定与未绑定的类方法用法分析
Apr 29 Python
pandas apply 函数 实现多进程的示例讲解
Apr 20 Python
Python3实现爬取简书首页文章标题和文章链接的方法【测试可用】
Dec 11 Python
使用 Python 处理 JSON 格式的数据
Jul 22 Python
python切片(获取一个子列表(数组))详解
Aug 09 Python
pytorch常见的Tensor类型详解
Jan 15 Python
python中requests模拟登录的三种方式(携带cookie/session进行请求网站)
Nov 17 Python
python asyncio 协程库的使用
Jan 21 Python
全网最详细的PyCharm+Anaconda的安装过程图解
Jan 25 Python
python urllib和urllib3知识点总结
Feb 08 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
完美的2个php检测字符串是否是utf-8编码函数分享
2014/07/28 PHP
PHP从FLV文件获取视频预览图的方法
2015/03/12 PHP
php实现通用的从数据库表读取数据到数组的函数实例
2015/03/21 PHP
PHP中调用C/C++制作的动态链接库的教程
2016/03/10 PHP
根据鼠标的位置动态的控制层的位置
2009/11/24 Javascript
javascript下string.format函数补充
2010/08/24 Javascript
js hover 定时器(实例代码)
2013/11/12 Javascript
js toFixed()方法的重写实现精度的统一
2014/03/06 Javascript
JQuery记住用户名密码实现下次自动登录功能
2015/04/27 Javascript
JavaScript对象学习小结
2015/09/02 Javascript
jQuery Validate表单验证深入学习
2015/12/18 Javascript
js实现滚动条滚动到某个位置便自动定位某个tr
2021/01/20 Javascript
JS实现上下左右对称的九九乘法表
2016/02/22 Javascript
javascript判断firebug是否开启的方法
2016/11/23 Javascript
无阻塞加载js,防止因js加载不了影响页面显示的问题
2016/12/18 Javascript
JavaScript:ES2019 的新特性(译)
2019/08/08 Javascript
Angular value与ngValue区别详解
2019/11/27 Javascript
angula中使用iframe点击后不执行变更检测的问题
2020/05/10 Javascript
jenkins自动构建发布vue项目的方法步骤
2021/01/04 Vue.js
Python极简代码实现杨辉三角示例代码
2016/11/15 Python
在Python中执行系统命令的方法示例详解
2017/09/14 Python
python机器学习之决策树分类详解
2017/12/20 Python
Django 中使用流响应处理视频的方法
2018/07/20 Python
Python爬虫——爬取豆瓣电影Top250代码实例
2019/04/17 Python
python如何爬取网站数据并进行数据可视化
2019/07/08 Python
python实现将json多行数据传入到mysql中使用
2019/12/31 Python
Django用数据库表反向生成models类知识点详解
2020/03/25 Python
ffmpeg+Python实现B站MP4格式音频与视频的合并示例代码
2020/10/21 Python
HTML5中Canvas与SVG的画图原理比较
2013/01/16 HTML / CSS
cosme官方海外旗舰店:日本最大化妆品和美容产品的综合口碑网站
2017/01/18 全球购物
荷兰家电购物网站:Expert.nl
2020/01/18 全球购物
班级寄语大全
2014/04/10 职场文书
请假条格式范文
2014/04/10 职场文书
倡议书作文
2015/01/19 职场文书
HTML页面滚动时部分内容位置固定不滚动的实现
2021/04/14 HTML / CSS
linux目录管理方法介绍
2022/06/01 Servers