2014-10-12 2 views
3

Я использую Django 1.7 с Mezzanine. Я хотел бы иметь некоторую страницу в admin, где сотрудники могут вызывать некоторые действия (команды управления и т. Д.) С помощью кнопок и других элементов управления.Django - пользовательская страница администратора, не имеющая отношения к модели

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

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

ответ

3

На самом деле это проще. Как раз перед urlpatterns в urls.py патч admin 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 
+0

Чем можно расширить шаблон администратора "index.html", чтобы включить ссылку на это представление. –

+0

Вы мужчина - спасатель! Большое спасибо. Почему об этом не подумал раньше? –

1

ModelAdmin.get_urls Позвольте добавить 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/1.7/ref/contrib/admin/#django.contrib.admin.ModelAdmin.get_urls

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