我是靠谱客的博主 幸福蓝天,最近开发中收集的这篇文章主要介绍xadmin中如果需要给指定的list页面增加一个链接按钮用来跳转到自定义的html页面时,可参考如下修改xadmin源码,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述


效果如上图所示

# 一般跳转需要在list页面之间进行跳转,而这次跳转是跳转到自己定义的html页面上,所以需要修改如下:

#extra_app/xadmin/templates/xadmin/views/model_list.html
#在 {% block nav_btns %} 里面添加:(由于只是跳转的特例,所以url是写死的,其他地方按需修改)
    <!--#自定义-->
    {% if has_saler_permission %}
        <a href="/tradeapp/sellerpush/saler_money/" class="btn btn-primary"><i class="fa fa-plus"></i>
    {% blocktrans with cl.opts.verbose_name as name %}查看月销售提成{% endblocktrans %}</a>
    {% endif %}
   <!-- #The_end-->
#extra_app/xadmin/views/list.py
#添加如下#自定义后的代码:
class  ListAdminView (ModelAdminView):
    
    @filter_hook
    def  get_context ( self):
        #自定义
      'has_saler_permission' :  self .has_saler_permission() ,
      'saler_url' :  self .model_saler_url( 'saler' ) ,
 
#extra_app/xadmin/views/base.py
#添加如下代码(#自定义之间的代码)
class ModelAdminView(CommAdminView):
     @filter_hook
    def get_object_url(self, obj):
        if self.has_change_permission(obj):
            return self.model_admin_url("change", getattr(obj, self.opts.pk.attname))
        elif self.has_view_permission(obj):
            return self.model_admin_url("detail", getattr(obj, self.opts.pk.attname))
        #自定义
        elif self.has_saler_permission(obj):
            return self.model_saler_url()
        #The_End
        else:
            return None
    #自定义
     def model_saler_url(self, *args, **kwargs):
         #此跳转链接是自定义html的页面的链接
        return '/tradeapp/sellerpush/saler_money/'
    #The_End
     def get_model_perms(self):
        """
        Returns a dict of all perms for this model. This dict has the keys
        ``add``, ``change``, and ``delete`` mapping to the True/False for each
        of those actions.
        """
        return {
            'view': self.has_view_permission(),
            'add': self.has_add_permission(),
            'change': self.has_change_permission(),
            'delete': self.has_delete_permission(),
            #自定义
            'saler': self.has_saler_permission(),
            #The_End
        }
    #此处修改了remove_permissions的判断方法,关键地方,因为需要在adminx中添加筛选条件,为了避免在多个adminx的注册类里添加过滤条件,
    #此处把return ('saler'not in self.remove_permissions)修改为return ('saler'not in self.remove_permissions),
    #这样只需要在对应的adminx注册类里添加属性: remove_permissions = ('saler',) 这样就可以避免很多麻烦
     def has_saler_permission(self, obj=None):
        codename = get_permission_codename('saler', self.opts)
        return ('saler'in self.remove_permissions) and self.user.has_perm('%s.%s' % (self.app_label, codename))
    #The_End
    #自定义的html 和views, urls 的修改就不叙述了。
##########################################
记得在对应的adminx注册类添加如下属性:
remove_permissions = ('saler',)

最后

以上就是幸福蓝天为你收集整理的xadmin中如果需要给指定的list页面增加一个链接按钮用来跳转到自定义的html页面时,可参考如下修改xadmin源码的全部内容,希望文章能够帮你解决xadmin中如果需要给指定的list页面增加一个链接按钮用来跳转到自定义的html页面时,可参考如下修改xadmin源码所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(23)

评论列表共有 0 条评论

立即
投稿
返回
顶部