Django 将 TemplateView 传递给 ModelAdmin.add_view
Django pass TemplateView to ModelAdmin.add_view
基于 Django 管理站点文档...我可以覆盖 ModelAdmin.add_view 以注入一个自定义视图。我需要注入一个 TemplateView 来覆盖一个模型 change/add 管理页面。
此自定义视图将包含一个 AngularJS 应用程序,用于在管理员内部管理我的应用程序的一个复杂模型。
admin.py
class ContractAdmin(admin.ModelAdmin):
def add_view(self, request, form_url='', extra_context=None):
return ContractAdminView.???? (.as_view() doesn't work)
# ContractAdminView is a TemplateView.
ps:这是在 Django Admin 中添加 AngularJS powered form/page 的好方法吗??
as_view()
returns 您应该使用 request
参数调用的视图函数:
def add_view(self, request, form_url='', extra_context=None):
return ContractAdminView.as_view()(request)
要向 ModelAdmin
添加任何自定义视图,您应该覆盖 ModelAdmin.get_urls()
方法。为了与管理布局 UI 相匹配,您的模板可以扩展 admin/base_site.html
模板:
{% extends "admin/base_site.html" %}
{% block title %}My title{% endblock %}
{% block content %}
My content and forms here.
{% endblock %}
基于 Django 管理站点文档...我可以覆盖 ModelAdmin.add_view 以注入一个自定义视图。我需要注入一个 TemplateView 来覆盖一个模型 change/add 管理页面。
此自定义视图将包含一个 AngularJS 应用程序,用于在管理员内部管理我的应用程序的一个复杂模型。
admin.py
class ContractAdmin(admin.ModelAdmin):
def add_view(self, request, form_url='', extra_context=None):
return ContractAdminView.???? (.as_view() doesn't work)
# ContractAdminView is a TemplateView.
ps:这是在 Django Admin 中添加 AngularJS powered form/page 的好方法吗??
as_view()
returns 您应该使用 request
参数调用的视图函数:
def add_view(self, request, form_url='', extra_context=None):
return ContractAdminView.as_view()(request)
要向 ModelAdmin
添加任何自定义视图,您应该覆盖 ModelAdmin.get_urls()
方法。为了与管理布局 UI 相匹配,您的模板可以扩展 admin/base_site.html
模板:
{% extends "admin/base_site.html" %}
{% block title %}My title{% endblock %}
{% block content %}
My content and forms here.
{% endblock %}