<强>背景强>
最近做项目开发出现一个需求,就是前端会发来用户对某一项内容的报,错报错信息中包含出错内容的id,为了方便管理,需要实现点击这个id直接转达相应内容的详情页面。
效果展示
<>强解决强>
首先在django admin的列表中查看数据id所代表的链接
使用浏览器的检查元素功能查看点击该id所跳转的链接
现在我们知道点击管理页面跳转链接的格式了。
<>强自定义部件强>
假如我们的内容id使用CharField字段存储,那么可以这样自定义一个部件
HTML
{%负载myfileter %}
引用>
& lt; a href=" https://www.yisu.com/zixun/{{小部件。值| generate_link}} " rel="外部nofollow”在{{小部件。值}}& lt;/a>{%负载myfilter %}是引入自定义模板标签的语句,该标签在下面定义。
python
类MyWidget (TextInput): template_name=" myWidget.html " def渲染(自我、名称、值,attrs=None,渲染器=None): 上下文=自我。get_context(名称、值attrs) 模板=loader.get_template (self.template_name) .render(上下文) 返回mark_safe(模板)<>强自定义模板过滤器强>
在views.py所在的目录下新建一个文件夹templatetags,注意必须为这个名字。在文件夹中新建一个myfileter.py文件和_init_.py文件。
myfileter.py
#生成自定义链接 @register.filter def generate_link(价值): id=str(值) #就是将第二张图片中的id替换为当前的身份证就行 返回"/admin/learningsource/learningsource/" +身份证+ "/更改/"<>强自定义模型表单强>
假如我们的模型定义如下
类FeedbackModel (models.Model): error_content_id=模型。UUIDField(“错误编号”,primary_key=True,默认=uuid.uuid4 ()) ........<强>在models.py中定义一个ModelForm 强>
类FeedbackModelForm (ModelForm): error_content_id=forms.CharField (label="错误编号”,小部件=MyWidget) 类元: 模型=SourceLinkErrorReport 字段=[error_content_id, .....] >之前<强>假如该模型在admin.py的模型管理器为强>
类FeedbackModelAdmin (admin.ModelAdmin):
引用>
..........<强>将上述定义的模型表单添加到模型管理器中强>
类FeedbackModelAdmin (admin.ModelAdmin):
引用>
形式=FeedbackModelForm
..........
使用这种方法可以不用创建一个空的模型然后重写它的changelist_view函数实现自定义链接,可以给管理员界面的文字,图片等添加链接(通过自定义部件就可实现),并且链接样式可以自己定义,使用更方便。
在安全性上,本文的做法实际上相当于自己手动给django管理内置视图函数发送请求,和原来django自己自动生成的页面链接没有任何区别,对自定义链接的响应实际上也要经django过* * * *管理的认证、安全性是没问题的。
以上这篇django管理添加自定义链接方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
django管理添加自定义链接方式