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之再深点,更懂list
Sep 20 Python
详解Python中的循环语句的用法
Apr 09 Python
python MySQLdb Windows下安装教程及问题解决方法
May 09 Python
Python构造自定义方法来美化字典结构输出的示例
Jun 16 Python
浅谈Python浅拷贝、深拷贝及引用机制
Dec 15 Python
在windows下使用python进行串口通讯的方法
Jul 02 Python
详解python实现交叉验证法与留出法
Jul 11 Python
PyCharm2019安装教程及其使用(图文教程)
Sep 29 Python
python判断链表是否有环的实例代码
Jan 31 Python
基于Python脚本实现邮件报警功能
May 20 Python
Python 整行读取文本方法并去掉readlines换行\n操作
Sep 03 Python
python之openpyxl模块的安装和基本用法(excel管理)
Feb 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
PHP 获取ip地址代码汇总
2015/07/05 PHP
php实现获取农历(阴历)、节日、节气的类与用法示例
2017/11/20 PHP
jQuery easyui datagrid动态查询数据实例讲解
2013/02/26 Javascript
如何解决Jquery库及其他库之间的$命名冲突
2013/09/15 Javascript
window.onresize 多次触发的解决方法
2013/11/08 Javascript
javascript中Array()数组函数详解
2015/08/23 Javascript
Bootstrap轮播插件中图片变形的终极解决方案 使用jqthumb.js
2016/07/10 Javascript
浅谈javascript alert和confirm的美化
2016/12/15 Javascript
利用JS实现简单的日期选择插件
2017/01/23 Javascript
基于vue实现分页/翻页组件paginator示例
2017/03/09 Javascript
JavaScript实现无刷新上传预览图片功能
2017/08/02 Javascript
vue-router 路由基础的详解
2017/10/17 Javascript
vuejs前后端数据交互之从后端请求数据的实例
2018/08/11 Javascript
JavaScript实现JSON合并操作示例【递归深度合并】
2018/09/07 Javascript
JavaScript模板引擎原理与用法详解
2018/12/24 Javascript
详解微信图片防盗链“此图片来自微信公众平台 未经允许不得引用”的解决方案
2019/04/04 Javascript
详解JS实现系统登录页的登录和验证
2019/04/29 Javascript
小程序异步问题之多个网络请求依次执行并依次收集请求结果
2019/05/05 Javascript
webpack的 rquire.context用法实现工程自动化的方法
2020/02/07 Javascript
jQuery实现飞机大战小游戏
2020/07/05 jQuery
利用Python实现简单的相似图片搜索的教程
2015/04/23 Python
python获取mp3文件信息的方法
2015/06/15 Python
Python中标准模块importlib详解
2017/04/16 Python
python实现简单聊天应用 python群聊和点对点均实现
2017/09/14 Python
Python计算一个给定时间点前一个月和后一个月第一天的方法
2018/05/29 Python
Python 中判断列表是否为空的方法
2019/11/24 Python
pytorch实现mnist分类的示例讲解
2020/01/10 Python
Django 博客实现简单的全文搜索的示例代码
2020/02/17 Python
python 列表推导和生成器表达式的使用
2021/02/01 Python
香港万宁官方海外旗舰店:香港健与美连锁店
2018/09/27 全球购物
Zavvi西班牙:电子游戏、极客服装、Blu-ray、Funko Pop等
2019/05/03 全球购物
俄罗斯美容和健康网上商店:Созвездие Красоты
2019/07/23 全球购物
完美主义个人的自我评价
2014/02/17 职场文书
班主任个人工作反思
2014/04/28 职场文书
中秋节国旗下演讲稿
2014/09/05 职场文书
离婚起诉书范文2016
2015/11/26 职场文书