Django - пользовательская страница администратора, не связанная с моделью

Я использую Django 1.7 с Mezzanine. Хотелось бы иметь какую-то страничку в админке, где персонал может вызывать какие-то действия (команды управления и т.д.) с кнопками и другими элементами управления.

Я также хотел бы избежать создания новой модели или вручную создать шаблон и добавить ссылку на него (если это возможно).

Каковы наиболее распространенные/чистые способы достижения этого?


person matousc    schedule 12.10.2014    source источник


Ответы (2)


На самом деле все проще. Непосредственно перед urlpatterns в urls.py исправляйте URL-адреса администратора следующим образом:

def get_admin_urls(urls):
    def get_urls():
        my_urls =  patterns('',
           url(r'^$', YourCustomView,name='home'), 
        )
        return my_urls + urls
    return get_urls

admin.autodiscover()

admin_urls = get_admin_urls(admin.site.get_urls())
admin.site.get_urls = admin_urls
person kpacn    schedule 12.10.2014
comment
Затем можно расширить шаблон администратора index.html, чтобы включить ссылку на это представление. - person Leszek Zarna; 24.07.2015
comment
Ты человек спасатель жизни! Большое спасибо. Почему не подумал об этом раньше? - person nik_m; 10.02.2017

ModelAdmin.get_urls позволяет добавить URL-адрес к URL-адресу администратора. Таким образом, вы можете добавить свой собственный вид следующим образом:

class MyModelAdmin(admin.ModelAdmin):
    def get_urls(self):
        urls = super(MyModelAdmin, self).get_urls()
        my_urls = patterns('',
            (r'^my_view/$', self.my_view)
        )
        return my_urls + urls

    def my_view(self, request):
        # custom view which should return an HttpResponse
        pass

https://docs.djangoproject.com/en/3.1/ref/contrib/admin/#django.contrib.admin.ModelAdmin.get_urls

Я не пробовал это, но мне кажется, что вы можете создать подкласс встроенного административного представления и позволить своему пользовательскому шаблону расширить встроенные административные шаблоны.

person allcaps    schedule 12.10.2014