django 管理面板健康检查
django admin panel healthcheck
我想为我的 Django 管理面板创建一个健康检查端点。
我想通过 admin.site.register_view
注册它(我正在使用 adminplus package),但我不知道如何让 public 可以访问它,而不需要先进行身份验证。
有什么想法吗?
所以我最终覆盖了 AdminPlusMixin
的子类中的 def has_permission(self, request)
:
from adminplus.sites import AdminPlusMixin
class MyAdmin(AdminPlusMixin, AdminSite):
def has_permission(self, request):
if request.resolver_match.url_name == 'admin-healthcheck':
return True
return super().has_permission(request)
我认为该软件包已过时,您可以改为执行以下操作:
在 models.py 中创建了一个代理模型,例如:
class Proxy(models.Model):
id = models.BigAutoField(db_column='id', primary_key=True)
def str(self):
return "<Label: id: %d>" % self.id
class Meta:
managed = False
verbose_name_plural = 'proxies'
db_table = 'proxy'
ordering = ('id',)
这只是一个 mysql 视图,它是根据现有 table
创建的
create view proxy
as select id
from samples
LIMIT 10;
最后在 admin.py
@admin.register(Proxy)
class LabelAdmin(admin.ModelAdmin):
change_list_template = 'label_view.html'
def changelist_view(self, request, extra_context=None):
...
return render(request, "label_view.html", context)
这样它将显示在管理面板中,在您正在使用的应用程序中。
可能您拥有的是 views.py 中的函数,在这种情况下,您应该替换 LabelAdmin class 中“...”所在的函数内容 class。
我想为我的 Django 管理面板创建一个健康检查端点。
我想通过 admin.site.register_view
注册它(我正在使用 adminplus package),但我不知道如何让 public 可以访问它,而不需要先进行身份验证。
有什么想法吗?
所以我最终覆盖了 AdminPlusMixin
的子类中的 def has_permission(self, request)
:
from adminplus.sites import AdminPlusMixin
class MyAdmin(AdminPlusMixin, AdminSite):
def has_permission(self, request):
if request.resolver_match.url_name == 'admin-healthcheck':
return True
return super().has_permission(request)
我认为该软件包已过时,您可以改为执行以下操作:
在 models.py 中创建了一个代理模型,例如:
class Proxy(models.Model):
id = models.BigAutoField(db_column='id', primary_key=True)
def str(self):
return "<Label: id: %d>" % self.id
class Meta:
managed = False
verbose_name_plural = 'proxies'
db_table = 'proxy'
ordering = ('id',)
这只是一个 mysql 视图,它是根据现有 table
创建的 create view proxy
as select id
from samples
LIMIT 10;
最后在 admin.py
@admin.register(Proxy)
class LabelAdmin(admin.ModelAdmin):
change_list_template = 'label_view.html'
def changelist_view(self, request, extra_context=None):
...
return render(request, "label_view.html", context)
这样它将显示在管理面板中,在您正在使用的应用程序中。
可能您拥有的是 views.py 中的函数,在这种情况下,您应该替换 LabelAdmin class 中“...”所在的函数内容 class。