我是靠谱客的博主 幸福蓝天,最近开发中收集的这篇文章主要介绍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源码所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复