Django混入,轻松将url添加到任何ModelAdmin
项目描述
可插入的django应用程序,提供单个混入类ExtraUrlMixin,轻松将新url(及相关屏幕按钮)添加到任何ModelAdmin。
url()装饰器将为ModelAdmin创建新的视图。
button()是url(button={...})的快捷方式。
link()用于添加指向外部url的按钮。
安装
pip install django-admin-extra-urls
安装后将其添加到INSTALLED_APPS
INSTALLED_APPS = (
...
'admin_extra_urls',
)
如何使用它
from admin_extra_urls.api import url, button, link, href
class MyModelModelAdmin(extras.ExtraUrlMixin, admin.ModelAdmin):
@link(label='Search On Google', 'http://www.google.com?q={target}') # /admin/myapp/mymodel/update_all/
def search_on_google(self, button):
# this is called by the template engine just before rendering the button
# `context` is the Context instance in the template
if 'original' in button.context:
obj = button.context['original']
return {'target': obj.name}
else:
button.visible = False
@link()
def search_on_bing(self, button):
return 'http://www.bing.com?q=target'
@button() # /admin/myapp/mymodel/update_all/
def consolidate(self, request):
...
...
@button() # /admin/myapp/mymodel/update/10/
def update(self, request, pk):
# if we use `pk` in the args, the button will be in change_form
obj = self.get_object(request, pk)
...
@button(urls=[r'^aaa/(?P<pk>.*)/(?P<state>.*)/$',
r'^bbb/(?P<pk>.*)/$'])
def revert(self, request, pk, state=None):
obj = self.get_object(request, pk)
...
@button(label='Truncate', permission=lambda request, obj: request.user.is_superuser)
def truncate(self, request):
if request.method == 'POST':
self.model.objects._truncate()
else:
return extras._confirm_action(self, request, self.truncate,
'Continuing will erase the entire content of the table.',
'Successfully executed', )
如果用button装饰的方法的返回值是HttpResponse,则将使用该返回值。否则,如果方法包含pk参数,则用户将被重定向到“更新”视图,否则浏览器将重定向到管理员的列表视图
与其他库的集成
django-import-export
@admin.register(Rule)
class RuleAdmin(ExtraUrlMixin, ImportExportMixin, BaseModelAdmin):
@button(label='Export')
def _export(self, request):
if '_changelist_filters' in request.GET:
real_query = QueryDict(request.GET.get('_changelist_filters'))
request.GET = real_query
return self.export_action(request)
@button(label='Import')
def _import(self, request):
return self.import_action(request)
在本地运行项目测试
使用 pip install -e '.[dev]' 安装开发依赖项,然后运行tox。
链接
稳定版 |
||||
开发版 |
||||
项目主页 |
||||
问题跟踪器 |
https://github.com/saxix/django-admin-extra-urls/issues?sort |
|||
下载 |
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源分布
django-admin-extra-urls-4.1.1.tar.gz (108.6 kB 查看散列)
关闭
django-admin-extra-urls-4.1.1.tar.gz的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | b896eebc24779081f5bb5015c41fb12a741c61d520eec88688749e4991f7cbf5 |
|
MD5 | a36689aadc59510a16ce7d5b463d0b93 |
|
BLAKE2b-256 | ee254afe0b88b91b49611437f4ae5d37b9ea4e907728a730e6b8e2ef970db4eb |