Django - 与模型无关的自定义管理页面

时间:2014-10-12 13:14:46

标签: python django django-admin mezzanine django-1.7

我正在使用Django 1.7和Mezzanine。我想在管理员中有一些页面,工作人员可以使用按钮和其他控制元素调用某些操作(管理命令等)。

我还想避免创建新模型,或手动创建模板并添加链接(如果可能)。

如何实现这一目标的最常见/最简洁的方法是什么?

2 个答案:

答案 0 :(得分:5)

实际上它更简单。就在urls.py中的urlpatterns之前,管理员会像这样管理网址:

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

答案 1 :(得分:1)

ModelAdmin.get_urls允许您向管理员网址添加网址。所以你可以像这样添加自己的视图:

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

我没有试过这个,但在我看来,你可以继承内置管理视图,让你的自定义模板扩展内置管理模板。