Проверка работоспособности панели администратора django
Я хочу создать конечную точку healthcheck для моей админпанели django.
Я хочу зарегистрировать ее через admin.site.register_view (я использую пакет adminplus), но я не могу понять, как сделать ее общедоступной, без необходимости сначала аутентифицироваться.
Есть идеи?
В итоге я переопределил def has_permission(self, request) в подклассе AdminPlusMixin:
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 представлением, которое создается из существующей таблицы
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.