【问题标题】:Django - custom admin page not related to a modelDjango - 与模型无关的自定义管理页面
【发布时间】:2014-12-07 03:54:48
【问题描述】:

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

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

实现这一目标的最常见/最干净的方法是什么?

【问题讨论】:

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


    【解决方案1】:

    其实更简单。就在 urls.py 中的 urlpatterns 补丁管理 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
    

    【讨论】:

    • 可以扩展管理模板“index.html”以包含指向该视图的链接。
    • 你是个救命恩人!非常感谢。为什么不早点想到这个?
    【解决方案2】:

    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

    我没有尝试过,但在我看来,您可以将内置管理视图子类化,并让您的自定义模板扩展内置管理模板。

    【讨论】:

      猜你喜欢
      • 2019-06-17
      • 2017-06-22
      • 1970-01-01
      • 1970-01-01
      • 2011-11-22
      • 2020-03-16
      • 2013-12-04
      • 2011-12-28
      相关资源
      最近更新 更多