Django - 与模型无关的自定义管理页面
问题描述:
我正在使用Django 1.7和Mezzanine。我想在管理员中设置一些页面,员工可以通过按钮和其他控制元素调用一些操作(管理命令等)。Django - 与模型无关的自定义管理页面
我也想避免创建新模型,或者手动创建模板并添加链接(如果可能)。
什么是最常见/干净的方式如何实现?
答
其实它更简单。在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
答
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
我没有尝试了这一点,但在我看来,你可以在构建管理员视图子类,让你的自定义模板扩展内置管理模板。
比可能的扩展管理模板“index.html”以包含指向此视图的链接。 – 2015-07-24 11:01:25
你是一个救星!非常感谢你。为什么没有想到这一点? – 2017-02-10 12:27:25