【问题标题】:how to create link in django admin to custom django admin url?如何在 django admin 中创建指向自定义 django admin url 的链接?
【发布时间】:2017-12-23 13:13:30
【问题描述】:

如何在 django admin 中创建链接到自定义 django admin url 我在 django admin 中有 2 个应用程序,我想从 app1 链接到应用程序 2 中的自定义 url

admin.py APP1

class APP1Admin(ModelAdmin):
    list_display = ('xx','request_me')

    def request_me(self,obj):

       reverse_path = reverse("admin: APP2_TargetLink",args=(obj.pk,)) # My Problem is  How to link to func APP2 target link

       return '<a href="%s"> link </a>'%(reverse_path)

    request_me.allow_tags =True

admin.py APP2

class APP2Admin(ModelAdmin):

   def get_urls(self):
       urls = super(APP2Admin, self).get_urls()
       my_urls = [
       url(r'(\d*)/target_link/$', self.admin_site.admin_view(self.target_link_view),name="TargetLink"),
    ]
      return my_urls + urls

    def target_link_view(self,request,id):
       ...
       return TemplateResponse(request, template, context)

【问题讨论】:

    标签: python django django-admin


    【解决方案1】:

    在定义 URL 模式时,您有 name="TargetLink",因此您可以将 URL 反转为

    reverse("admin:TargetLink",args=(obj.pk,))
    

    如果您希望 app2 出现在 URL 模式名称中,您必须自己包含它,例如:

       url(r'(\d*)/target_link/$', self.admin_site.admin_view(self.target_link_view),name="app2_TargetLink"),
    

    然后将其反转:

    reverse("admin:app2_TargetLink",args=(obj.pk,))
    

    【讨论】:

    • 我尝试了您的解决方案,但出现错误:找不到“app2_TargetLink”的反向。 'app2_TargetLink' 不是有效的视图函数或模式名称。
    • 您的目标链接视图确实有效吗?我的第一个建议有效吗?
    • 尝试将正则表达式更改为r'^(\d+)/target_link/$'
    • 抱歉,我没有其他建议。我无法在您的代码中发现问题。使用像 app1app2 这样的虚构名称会使事情变得更加棘手。
    • 再次坦克兄弟 :) 这个 app1 和 app 2 是示例名称
    猜你喜欢
    • 2015-09-17
    • 1970-01-01
    • 2012-04-20
    • 1970-01-01
    • 2011-06-26
    • 2018-08-16
    • 1970-01-01
    • 1970-01-01
    • 2013-05-19
    相关资源
    最近更新 更多