django管理添加自定义链接方式

  

<强>背景

  

最近做项目开发出现一个需求,就是前端会发来用户对某一项内容的报,错报错信息中包含出错内容的id,为了方便管理,需要实现点击这个id直接转达相应内容的详情页面。

  

效果展示

  

<>强解决

  

首先在django admin的列表中查看数据id所代表的链接

  

 django管理添加自定义链接方式

  

使用浏览器的检查元素功能查看点击该id所跳转的链接

  

 django管理添加自定义链接方式

  

现在我们知道点击管理页面跳转链接的格式了。

  

<>强自定义部件

  

假如我们的内容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管理添加自定义链接方式