Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何动态更改Django管理模板_Python_Django - Fatal编程技术网

Python 如何动态更改Django管理模板

Python 如何动态更改Django管理模板,python,django,Python,Django,我有这样的Django管理模型 class STUDENTAdmin(ModelAdmin): change_list_template = "students/student_change_list.html" def changelist_view(self, request, extra_context=None): # a lot of stuff happen here return TemplateResponse(request, self.change_

我有这样的Django管理模型

class STUDENTAdmin(ModelAdmin):
    change_list_template = "students/student_change_list.html"
def changelist_view(self, request, extra_context=None):
    # a lot of stuff happen here
    return TemplateResponse(request, self.change_list_template or [
        'admin/%s/%s/change_list.html' % (app_label, opts.object_name.lower()),
        'admin/%s/change_list.html' % app_label,
        'admin/change_list.html'
    ], context, current_app=self.admin_site.name)
现在,我想根据一些请求参数动态地改变它 差不多

if request.GET['foo']:
        change_list_template = "students/student_change_list_other.html"

我该怎么做呢?

我认为您需要覆盖
changelist\u视图
并对从中返回的
templaterresponse()
执行操作,或者在调用之前更改保存该名称的变量

原来的函数是这样的

class STUDENTAdmin(ModelAdmin):
    change_list_template = "students/student_change_list.html"
def changelist_view(self, request, extra_context=None):
    # a lot of stuff happen here
    return TemplateResponse(request, self.change_list_template or [
        'admin/%s/%s/change_list.html' % (app_label, opts.object_name.lower()),
        'admin/%s/change_list.html' % app_label,
        'admin/change_list.html'
    ], context, current_app=self.admin_site.name)
所以我认为像这样的代码

def changelist(self, request, extra_context=None):
    if request.GET['foo']:
        self.change_list_template = "students/student_change_list_other.html"

    return super(STUDENTAdmin, self).changelist_view(request, extra_context)