Django混合函数,用于轻松向任何ModelAdmin添加按钮
项目描述
django-admin-extra-buttons
这是对原始django-admin-extra-url
的全面重写。它提供装饰器,以便轻松向Django Admin页面添加自定义按钮,以及向任何ModelAdmin添加视图。
它允许轻松创建向导、操作以及/或指向外部资源的链接以及仅API视图。
有三个装饰器可用
button()
将方法标记为额外视图并显示相关按钮link()
这用于“外部”链接,在这种情况下,您不需要调用本地视图。view()
仅视图装饰器,这添加了一个新的URL,但不渲染任何按钮。choice()
类似于菜单的按钮,可以用于分组多个 @views()。
安装
pip install django-admin-extra-buttons
安装后,将其添加到 INSTALLED_APPS
INSTALLED_APPS = (
...
'admin_extra_buttons',
)
如何使用它
from admin_extra_buttons.api import ExtraButtonsMixin, button, confirm_action, link, view
from admin_extra_buttons.utils import HttpResponseRedirectToReferrer
from django.http import HttpResponse, JsonResponse
from django.contrib import admin
from django.views.decorators.clickjacking import xframe_options_sameorigin
from django.views.decorators.csrf import csrf_exempt
class MyModelModelAdmin(ExtraButtonsMixin, admin.ModelAdmin):
@button(permission='demo.add_demomodel1',
visible=lambda self: self.context["request"].user.is_superuser,
change_form=True,
html_attrs={'style': 'background-color:#88FF88;color:black'})
def refresh(self, request):
self.message_user(request, 'refresh called')
# Optional: returns HttpResponse
return HttpResponseRedirectToReferrer(request)
@button(html_attrs={'style': 'background-color:#DC6C6C;color:black'})
def confirm(self, request):
def _action(request):
pass
return confirm_action(self, request, _action, "Confirm action",
"Successfully executed", )
@link(href=None,
change_list=False,
html_attrs={'target': '_new', 'style': 'background-color:var(--button-bg)'})
def search_on_google(self, button):
original = button.context['original']
button.label = f"Search '{original.name}' on Google"
button.href = f"https://www.google.com/?q={original.name}"
@view()
def select2_autocomplete(self, request):
return JsonResponse({})
@view(http_basic_auth=True)
def api4(self, request):
return HttpResponse("Basic Authentication allowed")
@view(decorators=[csrf_exempt, xframe_options_sameorigin])
def preview(self, request):
if request.method == "POST":
return HttpResponse("POST")
return HttpResponse("GET")
项目链接
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源代码分布
django_admin_extra_buttons-1.5.8.tar.gz (995.6 kB 查看哈希值)
关闭
django_admin_extra_buttons-1.5.8.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 48dc9d470ade3f5f29c80753af4d367c08947d02c9a5757aa7a9223eda6812c5 |
|
MD5 | 571362d1829ea896bb313ff396e59120 |
|
BLAKE2b-256 | ea811a590014b6d87b6544cfaf21d06a6c584cfbc84bb41e33acfc9fd3e5af7f |